No Unity, como faço para implementar um pathfinding AI em um jogo de plataforma 2D?


Melhor resposta

Para um jogo de plataforma 2D (lado a lado), a maneira mais simples de pensar como fazer isso faria com que os jogadores se transformassem e o Sprite Renderer invertesse dessa forma e a velocidade do Translate também. Realmente não há pathfinding em um jogo de plataforma para um inimigo. Um exemplo seria algo como:

[SerializeField] Transform player;

[SerializeField] SpriteRenderer rend;

[SerializeField] float speed;

void Update()

{

if(player.pos.x < transform.position.x)

{

renderer.flipX = true;

transform.Translate(new Vector2(-speed, 0f));

}

else

{

renderer.flipX = false;

transform.Translate(new Vector2(speed, 0f));

}

Resposta

Um dos projetos em que eu estava trabalhando quando tinha tempo (= entre empregos: d) era um muito clássico, antigo nível baixo 2d motor de jogo baseado em sprite, adequado para plataformas e similares. Só porque.

É realmente uma coisa muito divertida de resolver, escrever seu próprio motor 2d, é pequeno o suficiente para que você possa fazê-lo trabalhe sozinho dentro de alguns meses antes de mais de anos, então não é como um grande motor 3D onde é um projeto torta no céu onde você nunca consegue fazer um jogo com ele. Ainda é bastante razoável, embora um pouco anacrônico, lançar seu próprio mecanismo 2d.

Principalmente meu mecanismo de jogo (escrito em C ++, em cima do Win32 simples) consistia em: - classe de gráficos (uma tela de baixo nível onde você pode desenhar linhas, polígonos ou pixels brutos) - classe sprite, para desenhar animações e sprites combinando peças de uma imagem, bem como desenhar texto em bitmap - classe tileset, para gerenciar fundos de tileset - uma hierarquia de classes de IU com componentes simples ( botões, painéis, caixa de listagem, etc.) - um motor de física simples (nada sofisticado, apenas algo que permite mover objetos com alguma velocidade e acionar a colisão com outros objetos e o cenário) - uma classe de som simples - o jogo principal máquina de estado de loop / jogo que amarrou tudo isso, enviou mensagens de mouse e teclado, enviou eventos para os objetos de IU, renderizou todos os sprites, atualizou todos os objetos de física, etc. é basicamente o "coração" do jogos. Se você quiser entender como os jogos básicos (e implicitamente os motores de jogo) funcionam, concentre-se nesta área, gerenciando o estado do jogo, os eventos do jogo e o loop principal de atualização / desenho. - o código de desenho Win32 dependente da plataforma em apenas um pequeno arquivo

Eu também escrevi alguns conversores de arquivo, um editor de tileset e um editor de animação usando .NET / C ++ / CLI para acompanhá-los. Na verdade, a maior parte do trabalho consistia em escrever as aulas de sprite e física, bem como o editor de sprites.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *