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.

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

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

Ponto de direção para todas instâncias

Mensagem por GM_PC_Jogos » 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.

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 620
Localização: Dourados-MS

Contato:

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

Mensagem por All-x » 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:

Código: Selecionar todos

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.
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

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

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

Mensagem por GM_PC_Jogos » 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!!!!!!

Responder

Quem está online

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