Encore un lecon de syg mais moi mon systeme est plus simple et marche.
MAsi j'avoue que c'est long desoler j'ai pas trop le temps.
Et c'est exactement ce qu'il faut chercher à faire.
Je ne donnais là qu'une solution générique qui marche dans tous les cas.
Dans le cas d'une rotation simple (X, Y, Z constants donc avec PasX, PasY et PasZ = 0) et sur un seul axe (Ax at Ay constants donc PasAx et PasAy = 0), les calculs deviennent vite très simples aussi.
Et c'est encore plus simple dans le cas d'une translation (déplacement rectiligne) car la fonction MoveObject fait tout pour nous.
Voici un très petit exemple de ce qu'on peu faire avec la méthode dont a parlé mister-fred et quelques notions sur les courbes paramétrées :
/* Le tonneau qui tourne */
new Barrel;
forward BarrelTurn ();
new Float:Ax=0.0, Float:Ay=0.0, Float:Az=0.0;
new Float:BX=0.0, Float:BY=0.0, Float:BZ=0.0;
new Float:T;
public OnGameModeInit ()
{
/* Le tonneau qui tourne au dessus du skate park à Los Santos */
Barrel = CreateObject (1225, 1912.0, -1390.0, 15.5, 0.000000, 0.000000, 0.000000);
/* On demarre un timer pour le tonneau qui tourne */
SetTimer ("BarrelTurn", 20, true);
}
/* Fonction de timer pour faire tourner le tonneau */*
public BarrelTurn ()
{
/* Les angles */
Ax += 1.0;
Ay += 1.5;
Az += 2.0;
/* On repasse par l'origine */
if (Ax == 360.0) Ax = 0.0;
if (Ay == 360.0) Ay = 0.0;
if (Az == 360.0) Az = 0.0;
SetObjectRot (Barrel, Ax, Ay, Az);
/* La position de l'objet */
T += 2.0;
if (T > 360.0) T=T-360.0;
BX = 1912.0 + 2.0 * floatcos (2.0*T, degrees);
BY = -1390.0 + 2.0 * floatsin (3.0*T, degrees);
BZ = 15.5;
SetObjectPos (Barrel, BX, BY, BZ);
}
Le jeu consiste à toucher le tonneau avec une moto (c'est possible et si on réussi, on le sait tout de suite .... BOUM !!).
++
Syg