GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Ssk le 07 Septembre 2009, 14:04:02
-
salut tout le monde comme vous le savez peut être je suis en train de faire un FS missile.
Mais pour y arriver ( enfin pour faire un truc réaliste ) il m' as fallut des calcules assez complexe pour mon niveau scolaire lol, j' ai tout de même réussi à le faire vu mon amour pour les maths lol.
Mais maintenant que mon calcule est réussi (surtout qu' il était base sur de la 2D) je veut passer au même calcule mais en 3D donc encore plus dur pour moi qui connait que les formules,
pour calcule l'aire dans un volume lol.
Bon passons au chose sérieuse donc, voila j' ai la rotation du missile ( la Z ) qui est bonne elle fixe bien le joueurs, mais je veut que la rotation y ( celle qui permet de point sur la hauteur) pointe sur le joueurs, je suis donc allez voir mon prof de math qui m' as aider j avais tout compris puis j' ai noter la formule sur une feuille mais j' ai oublie le reste :-\ .
je vous donne quand même la formule
donc c' est :
La racine carre de x au carrer + y au carre et tout ca divisez par une position z.
voila si quelqu' un peut m' aider ca me ferais super plaisir, je sais très bien que je recevrais pas d' aide tout de suite, car peu sont ceux qui s' y connaisse (je parle de sim et syg lol ou même hardcoder enfin ptetre lol )
Donc si on peut m' aider je suis prenneur ;)
-
Salut,
comme tu le dit, il s'agit simplement de quelques opérations mathématiques,
en fait tu peut utiliser la même technique que pour l'angle en Z, sauf que cette fois, ce sera en X, un truc de se genre:
ObjectRot(playerid, objectid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
new Float:xo,Float:yo,Float:zo;
GetObjectPos(objectid,xo,yo,zo);
x = x - xo;
y = y - yo;
z -= zo;
new Float:Rot = atan2(y,x);
x = floatsqroot(x * x + y * y);//ca nous prend la distance totale horizontale, pas moyen de controuner la racine carrée
new Float:Rot2 = atan2(z, x);
SetObjectRot(objectid, rot2, 0,Rot-180);//ensuite tu ajuste ici
}
sauf que là, il faudra jouer selon les trucs de gta, je ne sais pas comment les angles sont placés...
Par exemple tu devras peut-être placer la valeur dans l'axe Y de rotation
ou encore inverser z et x dans le atan2
++Sim++
-
Merci j' ai reussi grace au code mais il faut utiliser la rotation y =) ( moi j' ai confondu x et y -_-" donc tu as suivit mon code lol)
Ca :
SetObjectRot(objectid, rot2, 0,Rot-180);//ensuite tu ajuste icidevient ca:
SetObjectRot(objectid, 0,Rot2,Rot-180);//ensuite tu ajuste ici
Et puis c' est bon merci beaucoup sim =)