Menu
CoddyTech

Floats e Mathf

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 9 de 67.

O Unity trabalha com float: posições, velocidades, ângulos e Time.deltaTime são todos valores float. O C# interpreta 0.5 como um double e não converte um double em float sem que isso seja especificado, pois poderia haver perda de precisão. Quase todo iniciante encontra dois erros de compilação como esses nos primeiros scripts:

  • float half = 0.5; gera CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix.
  • float s = Math.Sin(x); gera CS0266: Cannot implicitly convert type 'double' to 'float', porque System.Math trabalha com doubles.

As correções: escreva literais float com f e use Mathf, a versão de Math do Unity que trabalha com float (Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI). Esta boia oscilante apresentava os dois erros e compila depois desta alteração:

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

Números inteiros, como 1 e 2, não precisam de sufixo: um int é convertido em float sem nenhuma perda.

challenge icon

Desafio

Fácil

O coração deve pulsar: seu tamanho vai de 1 até 1.5 e volta, três vezes por segundo, igualmente em todos os eixos. O script não compila. Corrija os erros na matemática de float do Unity e mantenha a fórmula igual.

Pressione Play para ver os erros no Console, corrija-os e depois clique em Check.

Experimente você mesmo

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);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity