Numeri decimali e Mathf
Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 9 di 67.
Unity conta in float: posizioni, velocità, angoli e Time.deltaTime sono tutti float. C# interpreta 0.5 come un double e non convertirà un double in un float senza che glielo si indichi, perché potrebbe perdere precisione. In quasi tutti i primi script dei principianti, questo causa due errori di compilazione:
float half = 0.5;generaCS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix.float s = Math.Sin(x);generaCS0266: Cannot implicitly convert type 'double' to 'float', perchéSystem.Mathopera con i double.
Le soluzioni: scrivi i valori letterali float con f e usa Mathf, la versione float di Unity di Math (Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI). Questa boa oscillante causava entrambi gli errori e compila dopo questa 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 richiedono suffissi: un int diventa un float senza alcuna perdita.
Sfida
FacileIl cuore dovrebbe pulsare: la sua dimensione passa da 1 a 1,5 e ritorno, tre volte al secondo, allo stesso modo su ogni asse. Lo script non viene compilato. Correggi gli errori usando la matematica sui float di Unity e mantieni invariata la formula.
Premi Play per vedere gli errori nella Console, correggili, poi premi Check.
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);
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti di scripting in Unity
1Il tuo primo script
Ciao, UnityPosiziona il cuboMuovi a ogni frameRuota ogni secondoGuida con i tastiRiepilogo: guida il cubo4Vettori
Sommare vettoriDirezioniSpazio locale e spazio globaleVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni7Progetto: Acchiappa la stella
L'acchiappatoreUna stella cadente10Il ciclo di vita degli script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL’ordine del ciclo di vitaRipasso: logger del ciclo di vita2L'Inspector
Campi dell'InspectorSerializeFieldNumeri decimali e MathfAttributi dell'InspectorRiepilogo: Ascensore5Trasformazioni e gerarchia
Genitori e figliScalaGuarda gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita6Oggetti di gioco e componenti
Riferimenti nell’InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRipasso: interruttore della luce