IA Básica - Identificação de parede

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

IA Básica - Identificação de parede

Mensagem por fonetico em Sab 21 Nov 2009, 19:50

Em todo um bom jogo profissional existem IAs (inteligência artificial) implantada em inimigos para tornar o jogo mais emocionante, sem a necessidade de um amigo do lado para ficar 'controlando' o inimigo por você. Este tutorial tem por objetivo ensinar como fazer uma IA básica, na qual o inimigo pode identificar se há uma parede a sua frente, se houver, ele deve parar, senão, ele segue seu caminho.

Para esta IA, utilizaremos apenas um comando, o qual o chamamos de place_free, que por sua vez, tem o objetivo de verificar se há um espaço em determinada direção.

Começando a brincadeira...

Primeiro, você deve criar uma parede para o inimigo, e é claro não esqueça de marcar a parede como um objeto sólido, ou então o place_free não a identificará.

Após isso, crie o nosso inimigo, e nele coloque um evento step que como você deve saber, serve para que as ações contidas nele sejam executadas a cada 'ciclo' do jogo. E nesse evento, crie o seguinte script:

if place_free(x-50,y){x-=5}

Talvez você pense que o script esteja errado porque no X eu não coloquei o sinal de =. Mas é assim mesmo, se no place_free você colocar este símbolo, o script dará como errado, e também coloque o X antes do Y, separando-os com vírgula, e mesmo de o Y não conter nenhum valor, somente coloque Y Happy
E estava quase esquecendo, aonde está o numero 50, é a distância do obstaculo, ou seja, quanto maior, mais distante será, quanto menor, mais perto.

Agora coloque a parede á esquerda e o player ao lado, um tanto perto da parede, e rode o jogo, você pôde notar que o player ficou parado, agora tire a parede e rode o jogo, você notou que ele andou até sair da room? Está certo a IA então né? Que o nosso objetivo foi que se o inimigo identificasse uma parede, ele parasse, e se não houver parede, ele andasse.

Agora umas observações, coloque o player mais longe da parede, você vai perceber que ao rodar o jogo, ele vai andar em direção a parede e quando chegar perto (50 píxeis), ele irá parar.

Aqui está o download da aula:
LINK DIRETO

Espero muito que vocês tenham gostado do tutorial e tenham aprendido algo com ele, aguarde que eu irei postar mais tutoriais sobre IAs!

Ah! Se tiverem alguma dúvida, postem aqui que eu ajudo Happy

bye-bye!

fonetico

Número de Mensagens : 1830
Idade : 21
Data de inscrição : 05/10/2009
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: IA Básica - Identificação de parede

Mensagem por lipe1994 em Sab 21 Nov 2009, 20:12

Caramba!!
Li a aula todinha e baixei o exemplo,cara tá muito bem explicadinho e talz....

Nota:11

Eu (e os novatos) esperamos mais aulas sobre I.A,afinal é a coisa mais chata que se
tem pra fazer.Queria te parabénizar e dizer que estou na ''torcida'' por novos tutos assim (Sobre I.A)

[/b]

lipe1994

Número de Mensagens : 304
Idade : 22
Data de inscrição : 16/10/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://www.gmbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: IA Básica - Identificação de parede

Mensagem por Convidad em Sab 28 Nov 2009, 02:11

Parabéns pelo tutorial souzalucasjose [Z¬)]. Para quem tiver dúvidas, isso vai ser de grande utilidade! place_free() normalmente causa bastante confusão mesmo...

Nota 10. [Z¬D]

Uma dica legal, também, é a função collision_line(), que retorna se pode haver colisão em um segmento de linha. Daí dá pra checar se há paredes ou outros objetos entre um objeto A e um B.

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: IA Básica - Identificação de parede

Mensagem por Conteúdo patrocinado Hoje à(s) 15:44


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum