Para criar um sistema de tiro simples no GameMaker, você precisa definir um objeto
para o projétil, configurar a lógica de disparo no objeto do jogador, e lidar com a
colisão do projétil com outros objetos (como inimigos). Vamos implementar isso passo a passo:
Criar o objeto do projétil:
Crie um novo objeto chamado obj_projetil.
Adicione um sprite simples para representar o projétil. Configurar a lógica do projétil:
No evento Create do obj_projetil, defina a velocidade do projétil.
No evento Step do obj_projetil, mova o projétil na direção correta. No evento Collision com o objeto obj_inimigo, destrua o projétil e trate a colisão. Configurar a lógica de disparo no objeto do jogador:
No evento Step do objeto do jogador (obj_jogador), verifique se a tecla de disparo
é pressionada e crie um projétil. Aqui está o código para cada parte:
No evento Create do obj_projetil:
gml Copiar código // Defina a velocidade do projétil speed = 10; // Ajuste conforme necessário direction = 0; // Defina a direção inicial (0 é para a direita, 180 para a esquerda, etc.) No evento Step do obj_projetil: gml Copiar código // Move o projétil na direção em que está apontando x += lengthdir_x(speed, direction); y += lengthdir_y(speed, direction);
// Destrua o projétil se sair da tela
if (x < 0 || x > room_width || y < 0 || y > room_height) { instance_destroy(); } No evento Collision do obj_projetil com obj_inimigo: gml Copiar código // Destrua o projétil ao colidir com um inimigo instance_destroy(other); // Destrói o inimigo instance_destroy(); // Destrói o projétil No evento Step do obj_jogador: gml Copiar código // Verifique se a tecla de disparo é pressionada if (keyboard_check_pressed(vk_space)) { // Cria um novo projétil na posição do jogador var proj = instance_create_layer(x, y, "Instances", obj_projetil); // Define a direção do projétil (ajuste conforme necessário, aqui está definido para a direita) proj.direction = 0; // 0 graus, projétil vai para a direita } Adicionando a direção do tiro: Se você quiser que o projétil seja disparado na direção em que o personagem está olhando, você pode adicionar uma variável para rastrear a direção do personagem e ajustá-la de acordo com o movimento. Suponhamos que obj_jogador se mova para a esquerda e para a direita, você pode fazer isso:
No evento Step do obj_jogador:
gml Copiar código // Variável para armazenar a direção do jogador var direcao_jogador;
// Verifique a entrada do jogador e atualize o movimento e a direção
x += movimento_horizontal * velocidade_horizontal;
// Verifique se a tecla de disparo é pressionada
if (keyboard_check_pressed(vk_space)) { // Cria um novo projétil na posição do jogador var proj = instance_create_layer(x, y, "Instances", obj_projetil); // Define a direção do projétil com base na direção do jogador proj.direction = direcao_jogador; } Com esses códigos, você tem um sistema de tiro básico no GameMaker. O jogador pode disparar projéteis pressionando a tecla de espaço, e os projéteis se moverão na direção definida. Adapte os valores e a lógica conforme necessário para se adequar ao seu jogo.