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.

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

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

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

Mensagem por Cambalinho » Ter Set 12, 2017 4:53 pm

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 :(
Editado pela última vez por Cambalinho em Ter Set 19, 2017 11:35 am, em um total de 1 vez.

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

Contato:

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

Mensagem por All-x » Ter Set 12, 2017 7:23 pm

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

Imagem

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


Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante