mouse_x/y em modo 3D

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

mouse_x/y em modo 3D

Mensagem por Witen em Qui 31 Jan 2013, 14:25

Como sabe as variáveis mouse_x é mouse_y marcam a posição do mouse em referencia a room, o problema é que no modo 3D a variável marca a posição do mouse em relação a view. Bom agora já da para advinha... existe algum modo do mouse_x/y marca de acordo com a room independente da posição (projeção) da câmera.

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: mouse_x/y em modo 3D

Mensagem por luiz_eldorado em Qui 31 Jan 2013, 16:26

Olha, eu vi isso na GMSKD do Jiraya. Tem dois scripts, primeiro você usa o ConvertPrepare:
Código:
// ConvertPrepare(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup,angle,aspect);
var mm;
dX = argument3 - argument0;
dY = argument4 - argument1;
dZ = argument5 - argument2;
mm = sqrt(dX*dX + dY*dY + dZ*dZ);
dX /= mm;
dY /= mm;
dZ /= mm;
uX = argument6;
uY = argument7;
uZ = argument8;
mm = uX*dX + uY*dY + uZ*dZ;
uX -= mm*dX;
uY -= mm*dY;
uZ -= mm*dZ;
mm = sqrt(uX*uX + uY*uY + uZ*uZ);
uX /= mm;
uY /= mm;
uZ /= mm;
tFOV = tan(argument9*pi/360);
uX *= tFOV;
uY *= tFOV;
uZ *= tFOV;
vX = uY*dZ - dY*uZ;
vY = uZ*dX - dZ*uX;
vZ = uX*dY - dX*uY;
vX *= argument10;
vY *= argument10;
vZ *= argument10;
Depois o Convert_2d:
Código:
// Convert_2d(x,y,xfrom,yfrom,zfrom,view)
// The script returns the 3d x and y coordinates at z = 0
screenx = 2*argument0/min(window_get_width(),room_width)-1;
screeny = 1-2*argument1/min(window_get_height(),room_height);
mX = dX + uX*screeny + vX*screenx;
mY = dY + uY*screeny + vY*screenx;
mZ = dZ + uZ*screeny + vZ*screenx;
if mZ != 0
begin
    d3d_mouse_x = argument2 - argument4 * mX / mZ;
    d3d_mouse_y = argument3 - argument4 * mY / mZ;
end;
else
begin
    d3d_mouse_x = argument2 - argument4 * mX;
    d3d_mouse_y = argument3 - argument4 * mY;
end;
Só tem um problema, ele só vê onde o mouse está no z = 0. Ou seja, não dá pra saber se está encostando em paredes, ele irá, basicamente, atravessar a parede e chegar no chão.

Até menos!

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: mouse_x/y em modo 3D

Mensagem por Witen em Qui 31 Jan 2013, 19:30

KKKK eu te perguntei no Facebook você não soube responder, vou testa aqui se de certo do um EDIT!

***EDIT***

Configurei os scripts de acordo com a projeção da câmera, o resto dos argumentos coloque com o valor 0:

Código:
ConvertPrepare(x,y,z, 25+phspeed*4+cos(90*pi/180),25+pvspeed*4+lengthdir_y(-36+z,90)-sin(90*pi/180),40-z, 0,0,1,0,0)
Convert_2d(x,y,x,y,z,0)

Usei d3d_mouse_x/y para substituir mouse_x/y...

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: mouse_x/y em modo 3D

Mensagem por Conteúdo patrocinado Hoje à(s) 14:22


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum