Menu
CoddyTech

Floats e Mathf

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 16 de 85.

Você conheceu o f em Decimais precisam de um f: C# lê 0.5 como um double, e o Unity trabalha com float. O mesmo acontece com a matemática. System.Math trabalha com doubles, então float s = Math.Sin(x); falha com CS0266: Cannot implicitly convert type 'double' to 'float'.

O Unity tem uma versão para float: Mathf: Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Esta boia oscilante falhava com os dois erros e compila depois da 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 se converte em float sem nenhuma perda.

challenge icon

Desafio

Fácil

Faça o script do coração compilar para que ele volte a pulsar.

  1. Na linha de size, troque Math.Abs e Math.Sin por Mathf.Abs e Mathf.Sin.
  2. Troque 0.5 por 0.5f e mantenha o restante da fórmula.

Pressione “Jogar”: o coração cresce de 1 para 1.5 e volta, cerca de uma vez por segundo. Depois, pressione “Verificar”.

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

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity