Liczby zmiennoprzecinkowe i Mathf
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 16 z 85.
W lekcji „Ułamki dziesiętne wymagają f” poznano f: C# odczytuje 0.5 jako double, a Unity wykonuje obliczenia w float. To samo dzieje się z obliczeniami matematycznymi. System.Math działa na liczbach typu double, więc float s = Math.Sin(x); powoduje błąd CS0266: Cannot implicitly convert type 'double' to 'float'.
Unity ma wersję typu float: Mathf, z elementami Mathf.Sin, Mathf.Abs, Mathf.Sqrt i Mathf.PI. Ta kołysząca się boja powodowała oba błędy, a po zmianie kod się kompiluje:
// przed zmianą: float y = 1 + Math.Sin(Time.time * 2) * 0.5;
float y = 1 + Mathf.Sin(Time.time * 2) * 0.5f;
transform.position = new Vector3(0, y, 0);Liczby całkowite, takie jak 1 i 2, nie wymagają sufiksu: wartość int zmienia się w float bez żadnej utraty precyzji.
Wyzwanie
ŁatwySpraw, aby skrypt serca kompilował się i znów pulsował.
- W wierszu
sizezmieńMath.AbsiMath.SinnaMathf.AbsiMathf.Sin. - Zmień
0.5na0.5fi pozostaw resztę wzoru bez zmian.
Naciśnij „Graj”: serce powiększa się od 1 do 1.5 i z powrotem, mniej więcej raz na sekundę. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using System;
using UnityEngine;
public class Pulse : MonoBehaviour
{
void Update()
{
float size = 1 + Math.Abs(Math.Sin(Time.time * 3)) * 0.5;
transform.localScale = new Vector3(size, size, size);
}
}
Wszystkie lekcje w sekcji Podstawy skryptów w Unity
1Podstawy C# w Unity
Witaj, UnityZmienneLiczby dziesiętne wymagają fTekst w konsoliZmienne, które pamiętająIf i elsePorównywanie liczbPowtórka: Zbieracz monet4Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski z nazwamiPrzyciski myszyPowtórka: naładowany skok7Pętle i metody
Powtarzaj za pomocą forPętle wewnątrz pętliNapisz metodęMetody, które zwracają wynikTablicePowtórka: schody10Wyszukiwanie obiektów
Wyszukiwanie po nazwieTagiWyszukiwanie po typieReferencje lepsze niż wyszukiwanieNull w UnityPowtórka: najbliższa moneta13Projekt: Unikaj bloków
BiegaczBloki z nieba2Wpraw to w ruch
Umieść sześcianPoruszaj w każdej klatceObracaj co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian5Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 to strukturaPodsumowanie: pilot drona8Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePowtórka: włącznik światła3Inspektor
Pola inspektoraSerializeFieldLiczby zmiennoprzecinkowe i MathfAtrybuty inspektoraPowtórka: winda6Przekształcenia i hierarchia
Rodzice i dzieciWciągnij flagęSkalowaniePatrz na obiektyPorusz się w kierunku punktuPodsumowanie: Księżyc na orbiciePoćwicz samodzielnie: Edytor online Unity