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. |
Range em uma função
Range em uma função
queria saber como poderia fazer para que uma torre atacasse quando um inimigo entrasse no range dela sem ter que fazer
if place_meeting(x+1,y,O_enemy);if place_meeting(x+2,y,O_enemy);if place_meeting(x+3,y,O_enemy);if place_meeting(x+4,y,O_enemy); etc...
como eu resolveria esse problema do range?
if place_meeting(x+1,y,O_enemy);if place_meeting(x+2,y,O_enemy);if place_meeting(x+3,y,O_enemy);if place_meeting(x+4,y,O_enemy); etc...
como eu resolveria esse problema do range?
Re: Range em uma função
Boa noite, tudo bem ? Espero que sim !!
Para criar isso oque você quer vamos usar a função chamada collision_circle();
primeiro vamos entende-la !! collision_circle(X DO NOSSO OBEJTO, Y DO NOSSO OBJETO, DIAMETRO DO CIRCULO(TAMANHO), QUAL OBJETO VAMOS VERIFICAR SE O CIRCULO COLIDIU, false, false)(Esses dois ultimos são irrelevantes para oque queremos então vamos deixar em false !).
Seguindo adiante, no objeto que vai verificar as colisões em RANGE você vai fazer duas coisas, primeira você vai criar um evento desenhar (Event Draw), coloque isso:
A segunda função funciona idêntica a função do collision_circle, porem ele desenha um circulo com um raio de 80cm o TRUE é para se o círculo é desenhado preenchido (falso) ou como um desenho de um pixel de largura (verdadeiro), lembre-se que esse valor deve ser o mesmo que vai na função do collision_circle.
Agora você precisa encontrar o centro do seu X e Y, e como fazer isso ? o seu X e Y são baseados na sua sprite, então dentro dela sabemos onde começa o nosso X e Y:
Em meu exemplo o X e Y estão no centro da Sprite, então não preciso alterar nada, nosso circulo ficara no centro sem problema nenhum! Agora vamos supor que não esteja assim, como resolver ? Iremos fazer isso
Com isso nos pegamos o tamanho da nossa sprite dividimos em 2 para obter o centro !!, agora que terminamos isso vamos para a parte lega !!
No seu objeto que vai detectar os inimigos coloque no evento etapa (Event Step):
Aqui estou verificando se nosso circulo colidiu com a parede, feito isso você pode comenta a linha do desenhar, mantendo apenas o draw_self();
Ja esta funcionando !! Ficou alguma duvida ?? Aqui esta modelo que fiz para este EXEMPLO !!
Para criar isso oque você quer vamos usar a função chamada collision_circle();
primeiro vamos entende-la !! collision_circle(X DO NOSSO OBEJTO, Y DO NOSSO OBJETO, DIAMETRO DO CIRCULO(TAMANHO), QUAL OBJETO VAMOS VERIFICAR SE O CIRCULO COLIDIU, false, false)(Esses dois ultimos são irrelevantes para oque queremos então vamos deixar em false !).
Seguindo adiante, no objeto que vai verificar as colisões em RANGE você vai fazer duas coisas, primeira você vai criar um evento desenhar (Event Draw), coloque isso:
Código: Selecionar todos
draw_self(); // Desenha a si mesmo
draw_circle(x + sprite_width/2, y + sprite_height/2, 80, true); // Desenha nosso cirulo (RANGE);
Agora você precisa encontrar o centro do seu X e Y, e como fazer isso ? o seu X e Y são baseados na sua sprite, então dentro dela sabemos onde começa o nosso X e Y:
Em meu exemplo o X e Y estão no centro da Sprite, então não preciso alterar nada, nosso circulo ficara no centro sem problema nenhum! Agora vamos supor que não esteja assim, como resolver ? Iremos fazer isso
Código: Selecionar todos
draw_circle(x + sprite_width/2, y + sprite_height/2, 80, true);
No seu objeto que vai detectar os inimigos coloque no evento etapa (Event Step):
Código: Selecionar todos
if collision_circle(x + sprite_width/2, y + sprite_height/2, 80, objColisWall, false, false) {
show_debug_message("Colidiu na parede");
} else {
show_debug_message("TA SUAVVE");
}
Ja esta funcionando !! Ficou alguma duvida ?? Aqui esta modelo que fiz para este EXEMPLO !!
Ninguém vai bater tão forte como a vida, mas a questão não é o quão forte você consegue bater. É o quão forte você consegue apanhar e continuar seguindo em frente.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes