- 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.
- 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.
- Vamos criar um Componente que faz o Game Object sempre se mover numa direção.
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;
}
}
- 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
?
- A resposta é simples: ele é obrigatório para todo Game Object. Por conta disso a Unity deixa uma referência ao componente já "pronta";
-
deltaTime
é o tempo que se passou desde o último frame.
- 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.