Menu
CoddyTech

Floats und Mathf

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 9 von 67.

Unity rechnet mit float: Positionen, Geschwindigkeiten, Winkel und Time.deltaTime sind allesamt Floats. C# interpretiert 0.5 als double und wandelt einen Double-Wert nicht ohne ausdrückliche Angabe in einen Float um, da dabei Präzision verloren gehen könnte. Bei den ersten Skripten von Anfängern führen zwei Dinge fast immer zu Compilerfehlern:

  • float half = 0.5; führt zu CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix.
  • float s = Math.Sin(x); führt zu CS0266: Cannot implicitly convert type 'double' to 'float', weil System.Math mit Doubles arbeitet.

Die Lösungen: Schreibe Float-Literale mit f und verwende Mathf, Unitys Float-Version von Math (Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI). Bei dieser schaukelnden Boje traten beide Fehler auf; mit der folgenden Änderung 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 keinen Suffix: Ein int wird ohne Genauigkeitsverlust in einen Float umgewandelt.

challenge icon

Aufgabe

Einfach

Das Herz sollte pulsieren: Seine Größe steigt von 1 auf 1.5 und wieder zurück, dreimal pro Sekunde, auf jeder Achse gleich. Das Skript lässt sich nicht kompilieren. Behebe die Fehler mit der Fließkomma-Mathematik von Unity und behalte die Formel bei.

Klicke auf Play, um die Fehler in der Console zu sehen, behebe sie und klicke dann auf Check.

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);
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen des Scripting in Unity