Conectar-se
Quem está conectado
22 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 21 Visitantes

theokof98

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Sem avaliações
Data de inscrição : 23/05/2012
Número de Mensagens : 515
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 36

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.wibix.webs.com

mouse_x/y em modo 3D

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.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 47

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://luizpontes.tk/

Re: mouse_x/y em modo 3D

em Qui 31 Jan 2013, 16:26
Reputação da mensagem: 100% (1 votos)
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!
avatar
Ranking : Sem avaliações
Data de inscrição : 23/05/2012
Número de Mensagens : 515
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 36

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.wibix.webs.com

Re: mouse_x/y em modo 3D

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...
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum