Voici un exemple que je m'étais amusé à faire pour tester les fonctions sur le objets.
C'est tout à fait en accord avec ce qu'a dit Asphalt (même si mon timer est plus court pour éviter les mouvements sacadés).
En haut du script :
/* Le baril qui tourne */
new Baril;
forward TourneBaril ();
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;
Dans OnGameModeInit :
/* Le baril qui tourne au skate park de Los Santos */
Baril = CreateObject (1225, 1912.0, -1390.0, 15.5, 0.000000, 0.000000, 0.000000);
/* On demarre un timer pour les mouvements du baril */
SetTimer ("TourneBaril", 20, true);
La fonction du timer :
/*************************
* FAIRE TOURNER LE BARIL *
*************************/
public TourneBaril ()
{
Ax += 1.0;
Ay += 1.5;
Az += 2.0;
if (Ax == 360.0) Ax = 0.0;
if (Ay == 360.0) Ay = 0.0;
if (Az == 360.0) Az = 0.0;
SetObjectRot (Baril, Ax, Ay, Az);
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 (Baril, BX, BY, BZ);
}
NB: Cette fonction fait tourner l'objet sur tous les axes et le déplace (dans un plan parallèle au plan (XY)) le long d'un courbe définie par :
x = 2*cos(2*T)
y= 2*sin(3*T)
Un petit jeu marrant consiste à essayer de toucher le baril en moto ou en voiture (le baril explose). La difficulté réside dans le fait que le baril a un mouvement assez rapide.
NB : Le baril étant au dessus de la fosse, il faut utiliser une rampe pour pouvoir le toucher.
++
Syg