Fließkommazahlen und Mathf
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 16 von 85.
Du bist dem f bereits in „Dezimalzahlen brauchen ein f“ begegnet: C# liest 0.5 als double, und Unity rechnet mit float. Dasselbe passiert bei mathematischen Berechnungen. System.Math arbeitet mit Doubles, daher schlägt float s = Math.Sin(x); mit CS0266: Cannot implicitly convert type 'double' to 'float' fehl.
Unity hat eine Float-Version davon, Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Bei dieser auf und ab schaukelnden Boje traten beide Fehler auf; danach lässt sie sich kompilieren:
// vorher: 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);Ganze Zahlen wie 1 und 2 brauchen kein Suffix: Ein int wird ohne Genauigkeitsverlust zu einem Float.
Aufgabe
EinfachSorge dafür, dass das Skript des Herzens kompiliert wird, damit es wieder pulsiert.
- Ändere in der Zeile
sizeMath.AbsundMath.SinzuMathf.AbsundMathf.Sin. - Ändere
0.5zu0.5fund behalte den Rest der Formel bei.
Drücke auf „Spielen“: Das Herz wächst von 1 auf 1.5 und wieder zurück, etwa einmal pro Sekunde. Drücke dann auf „Prüfen“.
Probier es selbst
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);
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground