Dúvida sobre IA

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

Dúvida sobre IA

Mensagem por gerudoking em Sab 07 Nov 2009, 20:44

Olá.
Estou constantemente trabalhando numa IA que faça inveja em muitas outras.Algumas coisas,como movimento do personagem de IA já estão prontas.Mas gostaria de saber sobre uma coisa:
1-Como faço para que quando o player apareça na frente do personagem(tipo,na posição do sprite considerada com frente),ele comece um código?

Por favor,respondam logo.

gerudoking

Número de Mensagens : 467
Idade : 19
Data de inscrição : 07/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por Gabreel em Dom 08 Nov 2009, 00:27

Você pode colocar que quando ele tiver a 1x do player execute o codigo..

(não sei criar o codigo de kbça) mais é uma idéia.

if x=1 {
Codigo
}

Isso não deve dar certo, mais segundo o que a fisica proporciona é isso que deve acontecer O_o

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por itallo em Dom 08 Nov 2009, 08:41

faça o seguinte no evento step:

tole = 10 ///aqui vc configura a tolerancia de y em relação aos dois objects

if player.y < self.y+tole and player.y > self.y-tole
{
script_execute("script de ataque")
}

itallo

Ranking : Sem avaliações
Número de Mensagens : 969
Idade : 24
Data de inscrição : 26/08/2009
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.zuluhotel.com.br

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por gerudoking em Seg 09 Nov 2009, 11:48

Biel:
Foi mal,não funfou.

oBKo:

Quase funcionou do jeito que eu queria,mas queria que quando o player chegasse na posição considerada como frente do inimigo,ai sim acontecia isto,pq assim ele se move se o player chegar por qualquer direção!

gerudoking

Número de Mensagens : 467
Idade : 19
Data de inscrição : 07/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por PedroX em Seg 09 Nov 2009, 11:57

if player.x < x and sprite_index=spr_tras{codigo}
if player.x> x and sprite_index=spr....entendeu?

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por gerudoking em Seg 09 Nov 2009, 13:04

Saquei,funcionou bem,mas o que eu quero é que:
1-O player chega na posição 0 graus do objeto inimigo,que está sendo considerada como frente.

2-Acontece o código.

3-Se a posição considerada como frente for 140 graus(por exemplo),acontece o mesmo.

gerudoking

Número de Mensagens : 467
Idade : 19
Data de inscrição : 07/07/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por dungeon333 em Seg 09 Nov 2009, 13:21

graus = point_direction(x,y,inimigo.x,inimigo.y)
if graus == 0
{
//inimigo do lado de la>>
}
if graus == 180
{
//inimigo do lado de la<<
}
//etc

dungeon333

Número de Mensagens : 351
Data de inscrição : 29/05/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por Denis Lemos em Seg 09 Nov 2009, 13:48

Para isso você tem que criar uma variável "lado", para saber onde é a frente do player !

Primeiro declara ela no create do player:
Código:

lado=1
// começará já virado para direita !

Agora no step coloca assim:
Código:

if lado=1 {image_xscale=1} else {image_xscale=-1}

if lado=1 && obj_inimigo.x > x  && distance_to_object(obj_inimigo)<100

  {
      with(obj_inimigo) " função que o inimigo deve fazer "
  }

if lado=0 && obj_inimigo.x < x  && distance_to_object(obj_inimigo)<100

  {
      with(obj_inimigo) " função que o inimigo deve fazer "
  }

Agora para isto funcionar você terá que declarar quando o lado é igual à " 1 = direita "
ou " 0 = esquerda " !

No evendo " Keyboard " para a direita=right, coloca apenas isso:
Código:
lado=1

No evendo " Keyboard " para a esquerda=left, coloca:
Código:
lado=0

Espero que isso te ajude !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por itallo em Seg 09 Nov 2009, 16:59

vel = 4

if distance_to_object(player) < 100{
if player.x > self.x{
lugar = -45
}else{
lugar = 45
}

if player.y > self.y{
altu = 10
}else{
altu = -10
}


if player.x+lugar < self.x{
hspeed = -vel+rnd
}else{
if player.x+lugar > self.x{
hspeed = +vel+rnd
}
}

if player.y+5 < self.y{
vspeed = -vel+rnd
}else{
if player.y-5 > self.y{
vspeed = vel+rnd
}
}

if self.y < player.y+5 and self.y > player.y-5{
vspeed = 0
}

if self.x < player.x+45 and self.x > player.x-45{
hspeed = 0
}
}

if distance_to_object(player) > 300
direction = random(360)
if direction > 0 and direction < 80 or direction < 360 and direction > 270{
hspeed = -4
}else{
hspeed = 4
}

if direction < 180{
vspeed = -2
}else{
if direction > 180{
vspeed = 2
}
}



////executando o atack
if vspeed = 0 and hspeed = 0{
if atack = 1{
script_execute(band_atk_1)
}
if atack = 2{
script_execute(band_atk_2)
}
}

=============
if vel = 4 or vel = -4
{
global.p1runer = 1
}else{
if vel = 8 or vel = -8
{
global.p1runer = 2
}
}

itallo

Ranking : Sem avaliações
Número de Mensagens : 969
Idade : 24
Data de inscrição : 26/08/2009
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

http://www.zuluhotel.com.br

Voltar ao Topo Ir em baixo

Re: Dúvida sobre IA

Mensagem por Conteúdo patrocinado Hoje à(s) 12:11


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