Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Haz que el script del corazón compile para que vuelva a latir.

  1. En la línea size, cambia Math.Abs y Math.Sin por Mathf.Abs y Mathf.Sin.
  2. Cambia 0.5 por 0.5f y 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

Practica por tu cuenta: Playground de Unity