Conectar-se
Quem está conectado
32 usuários online :: 3 usuários cadastrados, Nenhum Invisível e 29 Visitantes

Katerp, Koelho, Willy

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 07/07/2009
Número de Mensagens : 467
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Dúvida sobre IA

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.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Dúvida sobre IA

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
avatar
Ranking : Sem avaliações
Data de inscrição : 26/08/2009
Número de Mensagens : 969
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   :
   :
Ver perfil do usuário

Re: Dúvida sobre IA

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")
}
avatar
Data de inscrição : 07/07/2009
Número de Mensagens : 467
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Dúvida sobre IA

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!
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Dúvida sobre IA

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?
avatar
Data de inscrição : 07/07/2009
Número de Mensagens : 467
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Dúvida sobre IA

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.
Data de inscrição : 29/05/2009
Número de Mensagens : 351
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Dúvida sobre IA

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
avatar
Data de inscrição : 17/05/2009
Número de Mensagens : 938
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Dúvida sobre IA

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 !
avatar
Ranking : Sem avaliações
Data de inscrição : 26/08/2009
Número de Mensagens : 969
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   :
   :
Ver perfil do usuário

Re: Dúvida sobre IA

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
}
}
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum