Menu
CoddyTech

Numeri decimali e Mathf

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 16 di 85.

Hai incontrato la f in I decimali hanno bisogno di una f: C# legge 0.5 come un double, mentre Unity usa float. La stessa cosa succede con la matematica. System.Math funziona con i double, quindi float s = Math.Sin(x); dà errore con CS0266: Cannot implicitly convert type 'double' to 'float'.

Unity ne ha una versione per float, Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Questa boa oscillante dava entrambi gli errori e compila dopo la modifica:

// prima: 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);

I numeri interi come 1 e 2 non hanno bisogno di suffisso: un int diventa un float senza alcuna perdita.

challenge icon

Sfida

Facile

Fai compilare lo script del cuore, così tornerà a pulsare.

  1. Nella riga size, cambia Math.Abs e Math.Sin in Mathf.Abs e Mathf.Sin.
  2. Cambia 0.5 in 0.5f e mantieni il resto della formula.

Premi «Gioca»: il cuore passa da 1 a 1.5 e ritorno, circa una volta al secondo. Poi premi «Verifica».

Provalo tu

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);
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity