Invité Invité
| Sujet: Curseur Ultimate 3D Lun 10 Mai 2010 - 15:49 | |
| Normalement les variables mouse_x et mouse_y nous informe de la position de la souris sur l'axe X et sur l'axe Y.
Mais avec Ultimate 3D, dans une room avec une map et une orientation de la caméra, les variables mouse_x et mouse_y nous donne les coordonnées de la souris pas par rapport au terrain de la map mais par rapport à l'écran.
Je voudrais savoir si il existe une fonction ou un script qui permet de connaître la position de la souris sur une map de la room : coordonnées x,y ( et z, mais on peut l'obtenir avec GetTerrainHeightAtPos(obj_map,x,y)); tout en prenant compte de la rotation de la caméra. |
|
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Curseur Ultimate 3D Mar 11 Mai 2010 - 1:12 | |
| sans plus d'information sur ton type de jeu, non on peut pas t'aider ... |
|
Invité Invité
| Sujet: Reponse Mar 11 Mai 2010 - 10:28 | |
| - [TheDarkTiger] a écrit:
- sans plus d'information sur ton type de jeu, non on peut pas t'aider ...
Je souhaite faire un STR (Jeu de Srategie en Temp Réel), et quand il faut placer un bâtiment avec la souris, les fonctions mouse_x et mouse_y ne suffise pas. |
|
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Curseur Ultimate 3D Mar 11 Mai 2010 - 22:48 | |
| oui, c'est tout à fait logique. mouse_x et mouse_y sont en fonction de l'écran. Pas de ta camera ou de tes view ^^ Donc, il faudra faire un projection de l'écran sur ta zone visible de la camera. En gros, tu connait l'angle de vue ta camera, et tu connait la position du curseur. Donc, c'est un truc du genre : X=camera.x+ajuste*((angle*mouse_x/640)-(angle/2)); Y=camera.y+ajuste*((angle*mouse_y/480)-(angle/2)); ajuste dépendra vraiment de ton jeu, mais surtout de la hauteur de ta camera. qui plus est, ces lignes ne fonctionnent que si ta camera est bien au dessus de ton monde 3D. Après, faut s'amuser avec la trigo Je n'ai ni le temps de faire un exemple, ni le temps de faire un schéma. Mais je t'encourage à gribouiller un schéma dans un coin de feuille et à retrouver les formules toi même |
|
Clem007 Débutant
Messages : 16 Localisation : (567,274,859) Projet Actuel : Trio
| Sujet: Re: Curseur Ultimate 3D Jeu 13 Mai 2010 - 12:49 | |
| salut, je crois que ce que tu cherche est la fonction ScreenCoordToVector(OutputVectorID,ScreenCoordX,ScreenCoordY,CameraIndex) si j'ai bien compris, elle calcule le vecteur qui va du point (ScreenCoordX,ScreenCoordY) de la caméra vers le premier objet qu'il rencontre EDIT: j'ai essayé avec ça: - Code:
-
var v,l; v=ScreenCoordToVector(-1,mouse_x,mouse_y) l=CheckRayIntersection(obj_Terrain.id,obj_camera.x,obj_camera.y,obj_camera.z,CalculateVectorLongitude(v),CalculateVectorLatitude(v)) CalculateVectorScalarProduct(v,v,l) x=obj_camera.x+GetVector(v,1) y=obj_camera.y+GetVector(v,2) z=GetTerrainHeightAtPos(obj_Terrain.id,x,y) ReleaseVector(v)
ça donne presque ce qui faut... |
|
Invité Invité
| Sujet: solution Lun 31 Mai 2010 - 15:41 | |
| J'ai réussis a obtenir un resulat : - Code:
-
curseur.x = camera.y - (room_height- window_view_mouse_get_y(0)); curseur.y = camera.x - ((2*room_height - room_width) - window_view_mouse_get_x(0));
si pour la camera : - Code:
-
rotx = 45; roty = -90; rotz = 0;
Mais il y a quelque petites imperfections; plus la position de la souris est éloignée du centre de l'ecran, plus le curseur est éloigné de la position de la souris. |
|
Contenu sponsorisé
| Sujet: Re: Curseur Ultimate 3D | |
| |
|