Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Sorge dafür, dass das Skript des Herzens kompiliert wird, damit es wieder pulsiert.

  1. Ändere in der Zeile size Math.Abs und Math.Sin zu Mathf.Abs und Mathf.Sin.
  2. Ändere 0.5 zu 0.5f und 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

Übe selbstständig: Unity-Playground