Página 1 de 1

Balas do inimigo seguindo Player!

Enviado: Sex Ago 19, 2016 6:19 pm
por Higor Melo
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.

Re: Balas do inimigo seguindo Player!

Enviado: Sex Ago 19, 2016 6:40 pm
por chicoweb
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.

Re: Balas do inimigo seguindo Player!

Enviado: Sex Ago 19, 2016 6:46 pm
por Denis Lemos
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.

Re: Balas do inimigo seguindo Player!

Enviado: Sex Ago 19, 2016 7:10 pm
por Higor Melo
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!