5. Movimento dos obstáculos - TanookiVerde/WorkshopUnity GitHub Wiki

  1. Teríamos duas opções, basicamente:
    • (i) Fazer o dinossauro ficar parado e todos os outros obstáculos se moverem.
    • (ii) Fazer o dinossauro se mover e os obstáculos também.
  2. Por simplicidade, faremos a primeira opção. Dessa forma, agora precisamos fazer o obstáculo (o Cacto) se mover de forma constante para a esquerda.
  3. Vamos criar um Componente que faz o Game Object sempre se mover numa direção.

Movimento Constante

public class ConstantMovement : MonoBehaviour
{
    [SerializeField]
    private float horizontalVelocity; //Uma variável para controlar a velocidade horizontal, por segundo

    private void Update()
    {
        Move(); //Todo frame, se move
    }
    private void Move()
    {
        //Soma na posição do objeto, fazendo ele se mover na horizontal
        transform.position += Vector3.right * horizontalVelocity * Time.deltaTime; 
    }
}
  1. Este script é bem simples, mas tem duas novas questões:
    • (i) Por que para o componente Transform não precisamos usar GetComponent<Transform>()?
    • (ii) O que representa Time.deltaTime?

Component Transform

  1. A resposta é simples: ele é obrigatório para todo Game Object. Por conta disso a Unity deixa uma referência ao componente já "pronta";

Time.deltaTime

  1. deltaTime é o tempo que se passou desde o último frame.
  2. Multiplicamos ele na velocidade por que estamos colocando seu valor em UNIDADES/SEGUNDO. Como entre cada frame se passa bem menos que 1 segundo, precisamos somar só uma parte dessa velocidade. Resumindo:
    • Se são 2 U/s, mas se passaram 0.1 segundos, então precisamos andar 0.2 U para manter a velocidade constante.
⚠️ **GitHub.com Fallback** ⚠️