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.

Alterar variável para uma instância

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
GM_PC_Jogos
Novato
Novato
Reações: 0
Mensagens: 15

Alterar variável para uma instância

Mensagem por GM_PC_Jogos » Qua Ago 21, 2019 9:20 pm

Boa noite pessoal.

Fiz um "laser beam" com a ajuda de um tutorial do youtube, mas agora não estou conseguindo atribuir dano a uma única instância do inimigo, vou tentar explicar o código:

obj_jogador evento step:
if!(instance_exists(obj_laser_4)){
instance_create_layer(obj_jogador.x + (sprite_width / 2.8), obj_jogador.y, "Instances", obj_laser_4);
}
if(keyboard_check_released(vk_space)){
instance_destroy(obj_laser_4);
}

obj_laser_4 no evento create: (laser bean)
direction = 0;
fimx = 0;
fimy = 0;
tamanho = 0;

obj_laser_4 no evento step:
x = obj_jogador.x + 50;
y = obj_jogador.y;

var tamanho_max = 900;
for(i = 0; i < tamanho_max ; i++){
fimx = x + lengthdir_x(i, direction);
fimy = y + lengthdir_y(i, direction);

tamanho = i;

if(collision_point(fimx, fimy, obj_teste_inimigo, false, false)){
break;
}
}

obj_laser_4 no evento draw: (laser bean)
for(j = 0 ; j < tamanho ; j++){
draw_sprite_ext(spr_laser_4, 0, x + lengthdir_x(j, direction), y + lengthdir_y(j, direction), 1, random_range(0.8, 1.2), direction, c_white, 1);
}

Vou tentar resumir o que está acontecendo. Cria uma única instância do obj_laser_4 e no evento draw do obj_laser_4 aumenta o tamanho do sprite para o valor de no máximo 900 pixels em linha reta apenas.
No evento step do obj_laser_4 é onde está acontecendo a checagem da colisão, com o collision_point que diminui o tamanho do laser se encostar no inimigo.

Agora vem o problema....O inimigo possui uma variável vida = 100...eu gostaria que ao acertar cada instância desse inimigo, atribuísse um dano, mas pela colisão estar na no evento step, não sei como posso fazer isso. Tentei o with(obj_inimigo) order.vida -= 1 por exemplo, mas não funciona. Se eu coloco obj_inimigo.vida -=1, diminui a vida de todos inimigos....

E aproveitando o tópico, estou meio confuso com isso, porque o other funciona no evento collision e pega uma única instância?
Consigo fazer isso sem estar no evento collision?

Quem puder ajudar eu agradeço.

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Alterar variável para uma instância

Mensagem por None » Qua Ago 21, 2019 9:27 pm

Dá uma olhada nesse vídeo (esse é o terceiro de 4, você talvez queira ver os outros).

https://youtu.be/fV7POmEc-SA

É um modelo bem parecido, mas com o retorno da instancia, acho mais prático enviar o vídeo do que explicar tudo ^^'
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

Avatar do usuário
GM_PC_Jogos
Novato
Novato
Reações: 0
Mensagens: 15

Re: Alterar variável para uma instância

Mensagem por GM_PC_Jogos » Qua Ago 21, 2019 10:07 pm

Muito obrigado None pela ajuda

Estou vendo os vídeos e estou tentando entender o que esta acontecendo =)
Dar um tiro dentro do outro tiro, esta meio confuso no início para mim....kkkk

vlw None....vou ver com calma depois os vídeos.

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Alterar variável para uma instância

Mensagem por None » Qua Ago 21, 2019 10:15 pm

Não é um tiro dentro do outro, a linha só está lá para ser um auxílio visual.
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

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes