Salut,
ça tombe bien, je suis justement j'étudie justement en physique..... :P
Tu cherche le G subit par le joueur dans son avion, donc une accélération
Mais qu'es-ce qu'une accélération?
Un truc qui fait qu'on meurt quand on se prend un accident à trop grande vitesse?
Ça peut oui... (quand l'accélération au moment de la collision est trop grande le corps s'endommage)
La définition physique d'une accélération est une variation de vitesse.
(la vitesse en m/s, ca variation dans ce même unité de temps est la différence de vitesse (encore en m/s) par l'unité de temps (secondes) d'où m/s²).
Bref, pour ton problème, comment faire?
Regarde la vitesse à un instant (avec
GetVehicleVelocity s'il te plait) et enregistre la dans des variables (3 variables pour les 3 composantes)
Puis une autre fois après avoir laisser un laps de temps s'écouler. Il te faudra donc trouver de combien la vitesse a variée.
Attention, la vitesse est un vecteur. Il te faudra donc trouver la différence vectorielle entre les deux vitesses trouvées. Pour se faire, il te suffit de soustraire chacun des composantes (vecteur 2 - vecteur 1 s'il te plait, question d'avoir la bonne direction...).
À savoir que le vecteur résultant est toujours une vitesse, il te faudrait donc maintenant le convertir dans une unité plus pratique, le m/s.
NB. j'avais codé cette fonction et le multiplicateur (180) donne environ la vitesse en km/h:
Float:GetPlayerSpeed(playerid)
{
new Float:X, Float:Y, Float:Z;
new vehid;
if((vehid = GetVehicleID(playerid)))
{
GetVehicleVelocity(vehid, X, Y, Z);
}
else
{
GetPlayerVelocity(playerid, X, Y, Z);
}
return (floatsqroot(X * X + Y * Y + Z * Z) * 180);
}NB. N'utilisez pas cette fonction car elle n'est pas claire (explication:
http://www.gtaonline.fr/forums/index.php/topic,8857.msg149544#msg149544)
Sachant le multiplicateur pour avoir la vitesse en km/h, il te suffit de trouver le multiplicateur pour la vitesse en m/s (1 m/s = 3,6 km/h).
Maintenant que tu as la différence de vitesse en m/s, il ne te reste qu'à diviser le tout par le temps en secondes écoulé entre les 2 mesures (
GetTickCount() merci ;)).
Tu as donc désormais l'accélération en m/s². à savoir que le g est l'accélération gravitationnelle de la terre à sa surface. Sa valeur acceptée est d'approximativement 9,8 m/s² (plus précisément 9,80665 m/s²).
En divisant par cette valeur tu obtient donc l'accélération en g (attention le g doit être minuscule, le G = constante gravitationnelle = 6,673x10E-11) que subit le joueur.
NB. il pourrait être judicieux d'adapter cette valeur suite à certains tests car il est possible que GTA n'offre pas des accélération réalistes.
++Sim++