Movimentação A* no Unity
Antes de começar
Primeiro baixe o pacote do A* (https://arongranberg.com/astar/download) e o insira no seu projeto
Passo a passo
Primeiro crie um objeto vazio que servirá como área de movimentação, chame-o de navMesh
No navMesh adicione o componente Pathfinder
No componente Pathfinder de navMesh:
- No grupo Graphs, crie um
Grid Graph
e o edite:- Mude a propriedade
2D
paraativada
- Mude a propriedade
Use 2D Physics
paraativada
- Mude a propriedade
Diameter
para0.3
- Mude a propriedade
Obstacle Layer Mask
para a layer do seu cenário, no meu caso éground
- Mude a propriedade
- Agora redimensione sua navMesh para que ocupe todo o espaço do seu cenário ou o espaço que você quer que o inimigo fique
- Então clique no botão Scan, para fazer o escaneamento e processamento para a movimentação do inimigo
- No grupo Graphs, crie um
Agora crie um inimigo enemy (de preferência com animação) e adicione nele o componente AI Path
No componente AIPath (2D,3D) do enemy:
- Mude a propriedade
Orientation
paraYAxisForward (for 2D Games)
- Mude a propriedade
Enable Rotation
paradesativado
- Mude a propriedade
Gravity
paraNone
- Mude a propriedade
No enemy adicione o componente AI Destination Setter e nele adicione o seu player na propriedade
Target
Fazendo o inimigo se virar pra direção do jogador
- Crie o script EnemyAction e o adicione ao seu enemy e nele coloque o seguinte código:
public class EnemyAction : MonoBehaviour
{
public SpriteRenderer sprite;
public Transform player;
void Update()
{
if(player.position.x < transform.position.x)
{
sprite.flipX = false;
}
else
{
sprite.flipX = true;
}
}
}