Obrigado por visitar a The Game Makers Brasil Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais. |
Duvida com inimigos
Duvida com inimigos
Eu estou tentando fazer um inimigo mas estou com algumas duvidas
1- Como faço para que o inimigo tenha colisão em mais de um bloco? Na foto por exemplo ele
colide com só com um objeto e o outro ele atravessa
o codigo step que estou usando para colisão do inimigo é esse:
hsp = dir * movespeed
vsp += grav;
//horizontal colison
if (place_meeting(x+hsp,y,Obj_Terra))
{
while(!place_meeting(x+sign(hsp),y,Obj_Terra))
{
x += sign(hsp);
}
hsp = 0;
dir *= -1;
}
x += hsp;
//Vertical colision
if (place_meeting(x,y+vsp,Obj_Terra))
{
while(!place_meeting(x,y+sign(vsp),Obj_Terra))
{
y += sign(vsp);
}
vsp = 0;
}
y += vsp;
E a segunda duvida que eu tenho é como fazer para que o inimigo
morra quando o player pula na cabeça dele? quando o player tenta pular na
cabeça do inimigo ele morre, como faço para corrigir isso?
codigo que estou usando para colisão com player:
if (place_meeting(x,y,Obj_Player))
{
if (Obj_Player.y < y-10)
{
with (Obj_Player) vsp = -jumpspeed;
instance_destroy();
}
else
{
game_restart();
}
}
Agradeço qualquer ajuda!
1- Como faço para que o inimigo tenha colisão em mais de um bloco? Na foto por exemplo ele
colide com só com um objeto e o outro ele atravessa
o codigo step que estou usando para colisão do inimigo é esse:
hsp = dir * movespeed
vsp += grav;
//horizontal colison
if (place_meeting(x+hsp,y,Obj_Terra))
{
while(!place_meeting(x+sign(hsp),y,Obj_Terra))
{
x += sign(hsp);
}
hsp = 0;
dir *= -1;
}
x += hsp;
//Vertical colision
if (place_meeting(x,y+vsp,Obj_Terra))
{
while(!place_meeting(x,y+sign(vsp),Obj_Terra))
{
y += sign(vsp);
}
vsp = 0;
}
y += vsp;
E a segunda duvida que eu tenho é como fazer para que o inimigo
morra quando o player pula na cabeça dele? quando o player tenta pular na
cabeça do inimigo ele morre, como faço para corrigir isso?
codigo que estou usando para colisão com player:
if (place_meeting(x,y,Obj_Player))
{
if (Obj_Player.y < y-10)
{
with (Obj_Player) vsp = -jumpspeed;
instance_destroy();
}
else
{
game_restart();
}
}
Agradeço qualquer ajuda!
Re: Duvida com inimigos
O seu código de colisão com a terra está correto, você só precisa confirmar se o objeto que você quer que ele colida é o objeto bloco.
O seu código de colisão com o player tem um erro bem bobo.
Você está checando se ele colidiu com o player e dentro desta colisão você está checando se o player está longe dele, o que não faz sentido algum.
Você simplesmente tem que checar se o player está 1 pixel acima dele, e daí você faz todo o código de morrer e "pular" o player novamente.
Faça dois códigos separados se você achar melhor.
Um checando se o player está pulando na cabeça dele e outro checando se o player colidiu com ele.
Lembrando o código de colisão com a cabeça é y-1 o código de colisão é y apenas.
O seu código de colisão com o player tem um erro bem bobo.
Você está checando se ele colidiu com o player e dentro desta colisão você está checando se o player está longe dele, o que não faz sentido algum.
Você simplesmente tem que checar se o player está 1 pixel acima dele, e daí você faz todo o código de morrer e "pular" o player novamente.
Faça dois códigos separados se você achar melhor.
Um checando se o player está pulando na cabeça dele e outro checando se o player colidiu com ele.
Lembrando o código de colisão com a cabeça é y-1 o código de colisão é y apenas.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Duvida com inimigos
Obrigado pela ajuda!
Mas ainda tenho uma pequena duvida; Por que os inimigos estão "congelados"? Eles se movem
normalmente mas o sprite esta parado. Tem algum erro no codigo que coloquei para as animações?
if movespeed=-3{sprite_index=spr_inimigo_espinho1;image_speed=0.4}
if movespeed= 3{sprite_index=spr_inimigo_espinho2;image_speed=0.4}
Mas fora isso esta tudo funcionando normalmente.
Mas ainda tenho uma pequena duvida; Por que os inimigos estão "congelados"? Eles se movem
normalmente mas o sprite esta parado. Tem algum erro no codigo que coloquei para as animações?
if movespeed=-3{sprite_index=spr_inimigo_espinho1;image_speed=0.4}
if movespeed= 3{sprite_index=spr_inimigo_espinho2;image_speed=0.4}
Mas fora isso esta tudo funcionando normalmente.
- RoyalGuardians
- Programador
- Reações: 0
- Mensagens: 8
Re: Duvida com inimigos
Tem certeza que os valores de movespeed são sempre -3 e 3? tenta fazer com maior que zero e menor que zero, assim
Código: Selecionar todos
if movespeed < 3{sprite_index=spr_inimigo_espinho1;image_speed=0.4}
Re: Duvida com inimigos
Ainda não funcionou. Eu estava olhando o codigo e percebi algo, o movespeed só tem o valor 3 no Create;
dir = -1;
movespeed = 3;
grav = 1;
hsp = 0;
vsp = 0;
O fato do create não ter um valor negativo altera o codigo da animação? Preciso fazer alguma alteração?
Tentei adicionar movespeed = -3 mas ainda não funcionou
dir = -1;
movespeed = 3;
grav = 1;
hsp = 0;
vsp = 0;
O fato do create não ter um valor negativo altera o codigo da animação? Preciso fazer alguma alteração?
Tentei adicionar movespeed = -3 mas ainda não funcionou
- RoyalGuardians
- Programador
- Reações: 0
- Mensagens: 8
Re: Duvida com inimigos
Olha pelo que to vendo, movespeed é so a variavel que vc utiliza pra definir a velocidade que ele so move, faz o seguinte...
Create
Step
EndStep
com isso vc consegue saber a direção que ele ta indo numa boa, tenta isso, caso não funcione, quando eu chegar em casa eu tento fazer algo melhor, pelo celular é tenso mecher kk
Create
Código: Selecionar todos
xPrevious = x;
yPrevious = y;
Código: Selecionar todos
xPrevious = x;
yPrevious = y;
Código: Selecionar todos
if x > xPrevious{
sprite_index = sprite_direita;
image_speed = 0.4;
}else if x < xPrevious{
sprite_index = sprite_esquerda;
image_speed = 0.4;
}
Re: Duvida com inimigos
Tem algum momento em que você quer que a animação do inimigo pare?
Se a resposta for não, coloca no create event o image speed
Se a resposta for sim, quando?
Se a resposta for não, coloca no create event o image speed
Se a resposta for sim, quando?
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
Re: Duvida com inimigos
Era isso que eu estava precisando para tudo funcionar, obrigado!
E desculpem a demora para responder.
E desculpem a demora para responder.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante