Menu
CoddyTech

Gire a cada segundo

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

transform.Rotate(x, y, z) gira um GameObject o número de graus indicado em torno de cada um dos seus eixos. Quando chamado em Update(), ele gira um pouco a cada quadro, então o objeto continua girando.

Mas quantos quadros há em um segundo? Em um computador rápido, talvez 120; em um celular, talvez 30. Um simples transform.Rotate(0, 0, 5) giraria quatro vezes mais rápido no computador rápido. A resposta do Unity é Time.deltaTime: os segundos que passaram desde o último quadro. Multiplique uma velocidade por esse valor, e a velocidade será por segundo, em qualquer dispositivo.

Aqui, uma roda gira em torno do eixo z, 45 graus por segundo:

public float speed = 45f;

void Update()
{
    transform.Rotate(0, 0, speed * Time.deltaTime);
}

A 60 quadros por segundo, Time.deltaTime é cerca de 0.0167, então a cada quadro ela gira 45 * 0.0167, cerca de 0.75 grau, e 60 desses giros somam 45. A 30 quadros por segundo, ela gira o dobro a cada quadro, e um segundo ainda totaliza 45.

challenge icon

Desafio

Fácil

Faça o cubo girar em torno do eixo y a speed graus por segundo.

  1. Em Update(), chame transform.Rotate(x, y, z).
  2. Coloque speed * Time.deltaTime no número do meio, para y, e 0 para x e z. A roda acima girou em z; este cubo gira em y.

Pressione “Jogar”: o cubo dá um quarto de volta por segundo. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        // Gire o cubo em torno do seu eixo y aqui
    }
}

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

Pratique por conta própria: Playground de Unity