Floats y Mathf
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 16 de 85.
Ya conociste la f en «Los decimales necesitan una f»: C# interpreta 0.5 como un double, y Unity cuenta con float. Lo mismo ocurre con las operaciones matemáticas. System.Math trabaja con valores double, así que float s = Math.Sin(x); da error con CS0266: Cannot implicitly convert type 'double' to 'float'.
Unity tiene una versión para float: Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Esta boya oscilante fallaba con ambos errores y compila después de este cambio:
// antes: 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);Los números enteros, como 1 y 2, no necesitan sufijo: un int se convierte en float sin pérdida de precisión.
Desafío
FácilHaz que el script del corazón compile para que vuelva a latir.
- En la línea
size, cambiaMath.AbsyMath.SinporMathf.AbsyMathf.Sin. - Cambia
0.5por0.5fy conserva el resto de la fórmula.
Pulsa «Jugar»: el corazón aumenta de 1 a 1.5 y vuelve, aproximadamente una vez por segundo. Después, pulsa «Comprobar».
Pruébalo tú mismo
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);
}
}
Todas las lecciones de Fundamentos de scripting en Unity
1Conceptos básicos de C# en Unity
Hola, UnityVariablesLos decimales necesitan una fTexto en la consolaVariables que recuerdanIf y ElseComparar númerosRepaso: Recolector de monedas7Bucles y métodos
Repetir con forBucles dentro de buclesEscribir un métodoMétodos que respondenArraysRepaso: escalera10Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias vencen a FindEl null de UnityRepaso: moneda más cercana13Proyecto: Esquiva los bloques
El corredorBloques desde el cielo2Haz que se mueva
Coloca el cuboMuévelo en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo5Vectores
Sumar vectoresDireccionesEspacio local y mundialVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron8GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz3El Inspector
Campos del InspectorSerializeFieldFloats y MathfAtributos del InspectorRepaso: Ascensor6Transformaciones y jerarquía
Padres e hijosIza la banderaEscalaMira las cosasMuévete hacia un puntoRepaso: Luna en órbita9Proyecto: Atrapa la estrella
El cazadorUna estrella fugaz12El ciclo de vida de un script
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vidaPractica por tu cuenta: Playground de Unity