GM_PC_Jogos
Novato
Novato
Autor
Mensagens: 15
Registrado em: Ter Jul 09, 2019 2:12 pm
Karma: 27

Ponto de direção para todas instâncias

Ter Jul 09, 2019 3:03 pm

Boa tarde para todos.
Estou aprendendo a programar no game maker studio 2 e não estou conseguindo solucionar um problema.
Estou criando um jogo de nave (para teste e aprendizado) em que naves inimigas aparecem aleatoriamente fora da room e que "todas" deveriam atirar na direção do (player).

No objeto obj_controle, no evento "step" possui o seguinte código:
if(random(100) > 99)){
instance_create_layer(1980, random_range(50, 1000), "Instances", obj_nave_inimiga_1);
}
esse código cria um numero aleatório de 0 a 100 a cada step e se o numero sorteado for maior que 99, cria uma nave inimiga em posições aleatórias fora da room em que todas se movimentam apenas em linha reta na (horizontal) da direita para esquerda.

No objeto "obj_nave_inimiga_1" no evento step possui o código:
if(instance_exists(obj_nave)){
instance_create_layer(x, y,"Instances", obj_tiro_inimigo)
}
aqui, se "obj_nave" (player) existe, cria um tiro.

No obj_tiro_inimigo, no evento create:
speed = 4;
direction = point_direction(obj_nave_inimiga_1.x, obj_nave_inimiga_1.y, obj_nave.x, obj_nave.y);

O problema é que apenas uma nave atira na direção do player, as outras atiram, mas seguem o mesmo padrão da nave que está atirando. Ou seja, os tiros seguem o mesmo padrão de uma nave que está atirando apenas. (não sei o entendimento ficou claro)
                                -------------------------------<-(enemy_2) (segue o padrão do enemy_1)
Exemplo:    (player) ->      -------------------------- <-(enemy_1) (Ponto de direção correto)
                                  -----------------------------<-(enemy_3) (segue o padrão do enemy_1)

Gostaria que todas instâncias atirassem na direção do player. Não sei o que está havendo de errado.

Quem puder ajudar eu agradeço.
Muito obrigado pela atenção de todos.

Tags:
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 510
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 881

Contato:

Re: Ponto de direção para todas instâncias  Tópico resolvido

Ter Jul 09, 2019 8:47 pm

O erro está no último código. Você utilizou obj_nave_inimiga_1.x, quando você faz isso ele pega a primeira instância do objeto (Ou dependendo da plataforma uma instância aleatória).

Lembre-se: Objetos são MOLDES, e instâncias são de fato o que é criado. Logo cria-se instâncias de objeto.

Para resolver seu problema basta adaptar o segundo código com o terceiro:

if instance_exists(obj_nave)
{
   // Guarda o ID da instância criada (Ou seja, o 'i' agora é o tiro criado)
   var i = instance_create_layer(x, y,"Instances", obj_tiro_inimigo);
   
   // Aplica velocidade e direção no tiro
   i.speed = 4;
   i.direction = point_direction(i.x, i.y, obj_nave.x, obj_nave.y);
}


obj_nave.x pode ser usado, pois temos certeza que há somente uma instância dela na room.
1
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
GM_PC_Jogos
Novato
Novato
Autor
Mensagens: 15
Registrado em: Ter Jul 09, 2019 2:12 pm
Karma: 27

Re: Ponto de direção para todas instâncias

Ter Jul 09, 2019 9:46 pm

Muito obrigado Alex.

Você conseguiu solucionar meu problema.
Agora as naves estão atirando em direção ao player.
Também estou entendendo melhor o que está acontecendo sobre as instâncias criadas.

Vlw!!!!!!
1

Quem está online

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