Página 1 de 1

[RESOLVIDO]como obter a instancia\objecto mais proximo do jogador pensado na direcção do jogador?

Enviado: Ter Set 12, 2017 4:53 pm
por Cambalinho
como posso obter a instancia\objecto mais proximo do jogador pensando na direcção do jogador?
eu tenho este código, mas não é 100%:

Código: Selecionar todos

inst = instance_nearest(x+cos(degtorad(direction)), y-sin(degtorad(direction)), objWall);
porque posso obter a instancia da esquerda em vez de frente do jogador :(

Re: como obter a instancia\objecto mais proximo do jogador pensado na direcção do jogador?

Enviado: Ter Set 12, 2017 7:23 pm
por All-x
Nesse código que está usando o x e y vão diminuir no máximo 1 e aumentar no máximo 1 também.

O Game Maker já possui as funções trigonométricas lengthdir_x lengthdir_y. Logo, traduzindo seu código:

Código: Selecionar todos

inst = instance_nearest(x + lengthdir_x(1, direction), y + lengthdir_x (1, direction), objWall);
O primeiro argumento é a distância (Raio) do vetor e o segundo é a direção. No seu código, você não multiplica os valores de cosseno (cos) e de seno (sin) que variam de -1 até 1. Resumindo, o ponto que você colocar tem uma distância máxima de  1.

Se quiséssemos uma distância de 32 usando o seu código seria assim:

Código: Selecionar todos

inst = instance_nearest(x + (cos(degtorad(direction)) * 32), y - (sin(degtorad(direction)) * 32), objWall);
Ou seja, multiplica os valores retornados de cos e sin por 32. Usando as funções do GM ficaria assim:

Código: Selecionar todos

inst = instance_nearest(x + lengthdir_x(32, direction), y + lengthdir_x (32, direction), objWall);
Para aprender mais sobre vetores sugiro:

[Tutorial] lengthdir_x e lengthdir_y - Escrito por saim

O uso de vetores nos jogos - Ponto V

FLWS!

Re: como obter a instancia\objecto mais proximo do jogador pensado na direcção do jogador?

Enviado: Ter Set 19, 2017 11:33 am
por Cambalinho
muito obrigado por tudo