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.

Como converter graus para vector (Iluminação do Game Maker)

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Como converter graus para vector (Iluminação do Game Maker)

Mensagem por Foxy Of Jungle » Qui Ago 02, 2018 2:40 pm

Há uma função no Game Maker Studio:
d3d_light_define_direction(id,vx,vy,vz,colour);

A direção da luz é em vetor, mas preciso saber qual cálculo usar para converter esses graus para valores de vetor (0 - 1)   ~edit: (-1 a 1) ,erro meu :P
O jogo é Mobile, por isso estou a usar o sistema built-in de iluminação.
Editado pela última vez por Foxy Of Jungle em Sáb Set 29, 2018 7:27 pm, em um total de 2 vezes.

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Como converter degraus para vector (Iluminação do Game Maker)

Mensagem por None » Qui Ago 02, 2018 5:10 pm

Eu acho que não entendi a pergunta, você disse que um vetor vai de 0 a 1? Oo

Enfim, o game maker possui uma função chamada degtorad e radtodeg
Ela faz a conversão de graus
Eu estou falando dela porque acho que você confundiu radiano com vetor.
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Avatar do usuário
None
Colaborador
Colaborador
Reações: 2
Mensagens: 286

Re: Como converter degraus para vector (Iluminação do Game Maker)

Mensagem por None » Qui Ago 02, 2018 5:37 pm

Fui olhar a documentação, esta função é exclusiva para 3D e realmente o game maker diz que só vai de 0 a 1 (o que não é a definição de um vetor).

Ignore meu comentário anterior então ^^'
Tutorial de jogo de plataforma completo: https://youtu.be/MMUy_bMKqPk
Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

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

Contato:

Re: Como converter degraus para vector (Iluminação do Game Maker)

Mensagem por All-x » Qui Ago 02, 2018 5:50 pm

Leia a documentação: d3d_light_define_direction

Não é de 0 até 1, e sim de -1 até 1.

Se tu quiser usar valores de 0 a 360, basta fazer isso:

Código: Selecionar todos

direcao = 180;

minha_direcao_x = -1 + ((direcao mod 360) / 180);

d3d_light_define_direction(1, minha_direcao_x, 0, 0, c_white);
No teste aqui deu certo, porém não sei se isso é correto de se fazer. Qualquer coisa edito.

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!

Avatar do usuário
Ciro
Programador
Programador
Reações: 0
Mensagens: 33

Re: Como converter degraus para vector (Iluminação do Game Maker)

Mensagem por Ciro » Qui Ago 02, 2018 11:58 pm

Alex FC escreveu:Leia a documentação: d3d_light_define_direction

Não é de 0 até 1, e sim de -1 até 1.

Se tu quiser usar valores de 0 a 360, basta fazer isso:

Código: Selecionar todos

direcao = 180;

minha_direcao_x = -1 + ((direcao mod 360) / 180);

d3d_light_define_direction(1, minha_direcao_x, 0, 0, c_white);
No teste aqui deu certo, porém não sei se isso é correto de se fazer. Qualquer coisa edito.

FLWS!
Não é assim que vetores funcionam. A direção de um vetor é representada por um ponto em relação ao ponto de origem (0,0). Por exemplo, (1,0) seria 0 graus (direita), (-1,0) seria 180 graus (esquerda), (0,1) seria 90 graus (baixo) e (1,1) 45 graus.

A distância pode ser qualquer uma, por exemplo (10,10) também seria válido para 45 graus (caso não seja necessário que o vetor esteja normalizado, onde a distância deve ser sempre um)

Acho que esse artigo explica vetores bem: Link

No caso do problema do tópico, achei a solução aqui: Link

Adaptando para o Game Maker, eu acho que ficaria assim (esse vetor é 3D então precisa de dois ângulos):

Código: Selecionar todos

//coloque seus próprios valores nessas 3 variáveis
var angleX = 180;
var angleY = 90;
var intensity = 1; //insira um valor de 0 à 1

angleX = angleX * 3.14159265 / 180; 
angleY = angleX * 3.14159265 / 180; 

var sinYaw = sin(angleX); 
var cosYaw = cos(angleY); 

var sinPitch = sin(angle.x); 
var cosPitch = cos(angle.x); 

var directionX = cosPitch * cosYaw * intensity; 
var directionY = cosPitch * sinYaw * intensity; 
var directionZ = -sinPitch * intensity; 

d3d_light_define_direction(1, directionX, directionY, directionZ, c_white);
Eu também fiz uma adaptação para suportar intensidade na luz. Na função d3d_light_define_direction, ela é medida pela distância do vetor.

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

Contato:

Re: Como converter degraus para vector (Iluminação do Game Maker)

Mensagem por All-x » Sex Ago 03, 2018 12:37 am

Justamente @Ciro, por isso disse que achava que não era essa a forma correta. Eu estava tentando encontrar um exemplo usando vetores, mas não consegui adaptar nenhum.

Abraços
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
Foxy Of Jungle
Programador
Programador
Reações: 0
Mensagens: 153
Localização: Brasil
Contato:

Re: Como converter degraus para vector (Iluminação do Game Maker)

Mensagem por Foxy Of Jungle » Sex Ago 03, 2018 8:05 pm

Valeu pela atenção, ei @Alex eu escrevi errado sobre -1 até 1 :P
Obrigado pela ajuda de todos!

Responder

Quem está online

Usuários navegando neste fórum: Ahrefs [Bot] e 3 visitantes