Pontos de referência
Lição 1 de 25 do curso Jogo de Unity: Defesa de Torres da Coddy.
Neste curso, você vai criar um jogo de defesa de torres: os inimigos percorrem um caminho em ondas em direção à sua base, e as torres que você constrói ao lado do caminho os impedem. Cada aula adiciona um recurso. Pressione “Jogar” para experimentar e “Verificar” para avaliar. Todos os doze scripts estão no projeto desde o início; a maioria são estruturas básicas curtas que as aulas posteriores completam, e EnemyData é fornecido para a aula 2.
O caminho tem oito pontos de referência, de WP0 no ponto de surgimento até WP7 na base, no array waypoints do Grunt. O Grunt mantém o índice do ponto para o qual está indo e se move em direção a ele. Vector3.MoveTowards nunca ultrapassa o alvo, então o Grunt chega exatamente ao ponto de referência e == pode indicar que ele chegou:
Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
// chegou: siga para o próximo
}Depois do último ponto de referência, o índice é igual a waypoints.Length, e ler o array nessa posição gera um erro, então verifique o índice antes de usá-lo.
Desafio
FácilFaça o Grunt percorrer o caminho, de ponto de referência em ponto de referência.
- Em
Enemy, adicioneprivate int next = 1;(o Grunt começa em WP0). - Em
Update, retorne quandonext >= waypoints.Length. - Mova-se em direção a
waypoints[next].positioncomVector3.MoveTowardsaspeed * Time.deltaTime; quando chegar lá,next++.
Pressione “Jogar”: o Grunt percorre cada esquina e para na base. Em seguida, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
void Update()
{
// Percorra o caminho aqui: de um ponto de passagem ao próximo, em ordem.
}
}
Todas as lições de Jogo de Unity: Defesa de Torres
Pratique por conta própria: Playground de Unity