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.

Balas do inimigo seguindo Player!

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Higor Melo
Membro
Membro
Reações: 0
Mensagens: 42
Localização: SP

Balas do inimigo seguindo Player!

Mensagem por Higor Melo » Sex Ago 19, 2016 6:19 pm

Galera, é o seguinte:
Eu coloquei no código da bala o MOVE TOWARDS e funcionou perfeitamente, porém quando a bala está vindo e eu pulo para desviar, ela faz a curva segue o player e fica impossível desviar. Alguma sugestão? -GM8.

Avatar do usuário
chicoweb
Membro
Membro
Reações: 0
Mensagens: 135

Re: Balas do inimigo seguindo Player!

Mensagem por chicoweb » Sex Ago 19, 2016 6:40 pm

Você está dando move_toward direto no player.
Você tem que pegar a posição do player no MOMENTO em que o tiro sai, ou seja, no momento em que o tiro é criado, vc armazena assim:

Supondo que o objeto de tiro e do player são respectivamente obj_tiro_inimigo e obj_player.

Dentro do evento onde o inimigo atira:

Código: Selecionar todos

tiro = instance_create(x,y,obj_tiro_inimigo)
tiro.x_destino = obj_player.x
tiro.y_destino = obj_player.y
E no move toward que tem atualmente dentro do obj_tiro_inimigo vc muda para:

Código: Selecionar todos

move_towards_point( x_destino, y_destino, 10 );
E não esquece de declarar no create do obj_tiro_inimigo:

Código: Selecionar todos

x_destino = 0
y_destino = 0
O que vai acontecer?
Ele vai atirar na direção do player, mas não vai ficar seguindo, se o tiro ficar seguindo o player não há chance dele desviar.
Se o jogo passar a ficar muito fácil depois disso, manda o inimigo atirar mais balas que vc vai ver que legal que vai ficar.

EDIT: O código acima a bala vai parar quando chegar naquele ponto x,y destino, nesse caso seria melhor usar isso para o tiro não parar:

Código: Selecionar todos

tiro = instance_create(x,y,obj_tiro_inimigo)
tiro.direction = point_direction(x, y, obj_player.x, obj_player.y)
tiro.speed = 10
E retirar o move_toward do step ou seja la onde estiver.
Editado pela última vez por chicoweb em Sex Ago 19, 2016 6:50 pm, em um total de 1 vez.
Meus games:
Jump James - Aventura/Estratégia/Robô
Freedom of Pala Pala - Aventura/Estratégia
Prisioneira - RPG/Bloco/Ação

Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

Re: Balas do inimigo seguindo Player!

Mensagem por Denis Lemos » Sex Ago 19, 2016 6:46 pm

Até onde eu sei, essa função que vc usou faz a bala ir constantemente em direção de algum ponto e se esse ponto mudar, a direção da bala também vai mudar.

Tenta usar as variáveis padrão do GM que servem para a movimentação. Ex: speed, direction, etc...
Eu acho que a melhor maneira seria vc dar uma direção e velocidade para a bala no momento em que ela é criada, usando a posição que o player está ou estava no momento que a bala foi criada.

Coloca isso no Evento Create da bala. Ps: Eu não testei se funciona, faz anos que eu não usava o GM e não lembro muito bem dos comandos, eu voltei a usar o GM faz pouco tempo.

Código: Selecionar todos

direction = point_direction(x,y, obj_player.x, obj_player.y);
speed = 5;
obj_player é o nome do seu player.

Avatar do usuário
Higor Melo
Membro
Membro
Reações: 0
Mensagens: 42
Localização: SP

Re: Balas do inimigo seguindo Player!

Mensagem por Higor Melo » Sex Ago 19, 2016 7:10 pm

chicoweb escreveu:Você está dando move_toward direto no player.
Você tem que pegar a posição do player no MOMENTO em que o tiro sai, ou seja, no momento em que o tiro é criado, vc armazena assim:

Supondo que o objeto de tiro e do player são respectivamente obj_tiro_inimigo e obj_player.

Dentro do evento onde o inimigo atira:

Código: Selecionar todos

tiro = instance_create(x,y,obj_tiro_inimigo)
tiro.x_destino = obj_player.x
tiro.y_destino = obj_player.y
E no move toward que tem atualmente dentro do obj_tiro_inimigo vc muda para:

Código: Selecionar todos

move_towards_point( x_destino, y_destino, 10 );
E não esquece de declarar no create do obj_tiro_inimigo:

Código: Selecionar todos

x_destino = 0
y_destino = 0
O que vai acontecer?
Ele vai atirar na direção do player, mas não vai ficar seguindo, se o tiro ficar seguindo o player não há chance dele desviar.
Se o jogo passar a ficar muito fácil depois disso, manda o inimigo atirar mais balas que vc vai ver que legal que vai ficar.

EDIT: O código acima a bala vai parar quando chegar naquele ponto x,y destino, nesse caso seria melhor usar isso para o tiro não parar:

Código: Selecionar todos

tiro = instance_create(x,y,obj_tiro_inimigo)
tiro.direction = point_direction(x, y, obj_player.x, obj_player.y)
tiro.speed = 10
E retirar o move_toward do step ou seja la onde estiver.
Perfeito!

Trancado

Quem está online

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