Problema com distance_to_object

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

Problema com distance_to_object

Mensagem por Riccardoric em Sab 13 Set 2014, 12:39

Eae galera! Very Happy estava procurando um tutorial sobre IA de plataforma no forum mas não tenho acesso pra visualizar :O por isso que decidi criar o meu code Very Happy com a minha inteligencia so que to tendo problemas huehue
Bom é o seguinte criei um inimigo, que agora é um quadrado vermelho porque ainda n tenho sprite (é pra ser um zumbi), e quis começar com a animação dele tipo se ele estiver virado pra esquerda o sprite do inimigo vai ser inimigo_pra_esquerda algo do tipo mushahshasha ai depois eu quis colocar que quando o inimigo estiver perto do player ele vai mudar de sprite e vai estar atacando e tirando vida do player mas aconteceu um erro... Vou postar uma imagem
imagem do erro:
[img][/img]
quando eu começo o jogo mesmo que o inimigo estiver longe de mim eu perco 20 de vida e quando chego a 0 restart o jogo :/ eu queria que quando o player, ou o inimigo, estivesse bem perto tipo uns 3 pixel ou sla, o inimigo atacasse o player e perdia vida só uma vez por animação ou se tem como por um tempo seria melhor. vou colocar aqui os codes que eu fiz
No inimigo1_obj > Create > code
Código:
global.vida_inimigo=100
atacando=0
Step:
Código:
if place_free(x,y+1){
gravity = 1;
no_chao = false;}
else{
gravity = 0;
no_chao = true;
}

if inimigo1_obj && no_chao=1 && atacando=0
direction=180
speed=0 {
sprite_index=inimigo1_par_esq
}
if inimigo1_obj && no_chao=1 && atacando=0
direction=0
speed=0 {
sprite_index=inimigo1_par_dir
}
if inimigo1_obj && no_chao=1 && atacando=0
direction=0
speed=4 {
sprite_index=inimigo1_and_dir
}
if inimigo1_obj && no_chao=1 && atacando=0
direction=180
speed=4 {
sprite_index=inimigo1_and_esq
}
No Step novamente
Código:
if distance_to_object(obj_player) = 1
direction=0
{
atacando=1
sprite_index=inimigo1_atk_dir
global.health-=20
if global.health==0
{
game_restart ()
}
}
if distance_to_object(obj_player) = 1
direction=180
{
atacando=1
global.health-=20
if global.health==0
{
game_restart ()
}
}
Colisão com a bala
Código:
global.vida_inimigo-=15
if global.vida_inimigo==0
instance_destroy ()
VLW Very Happy

Riccardoric

Número de Mensagens : 206
Idade : 17
Data de inscrição : 17/06/2014
Reputação : 34
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por LightSpeedy em Sab 13 Set 2014, 12:51

Código:

if distance_to_object(obj_player) <= 4
direction=0
{
atacando=1
sprite_index=inimigo1_atk_dir
if global.health==0
{
game_restart ()
}
}
if distance_to_object(obj_player) <= 4
direction=180
{
atacando=1
if global.health==0
{
game_restart ()
}
}
if atacando=1
{
global.health-=20
}
if distance_to_object(obj_player) >=3
{
atacando=0
}

LightSpeedy

Ranking : Nota C
Número de Mensagens : 354
Data de inscrição : 24/04/2013
Notas recebidas : C
Reputação : 40
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por Susano em Sab 13 Set 2014, 13:04

você pode usar o que o velox falou, e usar o seguinte codigo tambem, só colocar isto no inimigo em step
code1:


if obj_player.x< x
{
sprite_index=inimigo1_andando_esq
}
//x>x
if obj_player.x>x
{
sprite_index=inimigo1_andando_dir
}
isto fara com que ele fique com a imagem em direção ao player, mais pode colocar isto com distance tambem, para não ficar sempre na posição do player:
code2:
if distance_to_object(obj_player)<=100
{
//xif obj_player.x< x
{
sprite_index=inimigo1_andando_esq
}
//x>x
if obj_player.x>x
{
sprite_index=inimigo1_andando_dir
}
}


Última edição por Susano em Sab 13 Set 2014, 13:10, editado 1 vez(es)

Susano

Número de Mensagens : 101
Data de inscrição : 16/05/2014
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://indiemakersbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por matheusco em Sab 13 Set 2014, 13:08

Sinceramente, mesmo com seu código já era pra estar funcionando, não achei nenhum erro que causasse o que você falou. Só achei duas coisas estranhas:

Isso:

if distance_to_object(obj_player) = 1
direction=0
{...

Não deveria estar assim?:

if distance_to_object(obj_player) = 1
{
direction=0
...

Talvez esteja causando o erro, não sei. Outra coisa é que você não colocou uma condição pra variável "atacando" voltar a ser 0. Não sei se essas coisas estão prejudicando algo, mas não notei nada demais além disso.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por willcraft2 em Sab 13 Set 2014, 13:18

O distance_to_object tem que usar o sinal < ou > exemplo:
Código:

if distance_to_object(obj_player)<300//Se  a distancia do obj_player for menor que 300
{
}

Espero ter ajudado flw

willcraft2

Ranking : Nota D
Número de Mensagens : 682
Idade : 16
Data de inscrição : 06/04/2012
Notas recebidas : D + D
Reputação : 42
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por Riccardoric em Sab 13 Set 2014, 14:09

HUEHUE Os 4 n foi, matheus o que vc disse ta certo mas n resolveu o problema kkkk Susano vc falou outra coisa tmb kkk Velox n mudou nada :/ ta mesmo erro, e Willcraft2 eu ja tentei com >, <, =, >=,<= n foram nenhum deles :S

Riccardoric

Número de Mensagens : 206
Idade : 17
Data de inscrição : 17/06/2014
Reputação : 34
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por matheusco em Sab 13 Set 2014, 14:50

Por acaso você definiu pra global.vida começar maior que 0? Confere também se você não ta usando "parent" obj_player no monstro. Também da uma olhada na origem dos seus sprites, pra ver se a origem deles não estão próximas (fora do desenho).

Esses códigos que você colocou só tiram sua vida se o monstro estiver perto, então não faz sentido você estar morrendo de longe. Se nada der certo, reescreva o código todo... tem muita coisa errada, igual disse na última postagem, que acredito que possa estar atrapalhando o funcionamento do "if".

Tipo esse:

if inimigo1_obj && no_chao=1 && atacando=0
direction=180
speed=0 {
sprite_index=inimigo1_par_esq
}

E dá uma revisada no código, não vejo porquê ter mais que um código desse:

if global.health==0
{
game_restart ()
}

E nem vejo motivo pra ele estar dentro de outro if.

matheusco

Número de Mensagens : 395
Idade : 24
Data de inscrição : 10/08/2014
Reputação : 51
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.tutoriaisgamemaker.com.br

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por Riccardoric em Sab 13 Set 2014, 15:31

Ja fiz isso não mudou nada ... alguem mais pode ajudar?

Riccardoric

Número de Mensagens : 206
Idade : 17
Data de inscrição : 17/06/2014
Reputação : 34
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Problema com distance_to_object

Mensagem por Conteúdo patrocinado Hoje à(s) 03:00


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