ent_animate(ENTITY* entity, STRING* scene, var percent, var mode)

Animiert eine Modell-, Terrain- oder Sprite-Entity durch Interpolation innerhalb einer zyklischen oder azyklischen Animationsszene.

ent_animatefrom(ENTITY* entity, ENTITY* source, STRING* scene, var percent, var mode)

Wie ent_animate, lädt aber die Bones-Animation aus einer separaten Entity. Auf diese Weise können Bones-Animationsszenen von Entities geteilt werden. A7.82  LC 

Parameter:

entity Zu animierende Entity
source Entity, die die Animationsszene enthält. Nur für Bonesanimationen. Die Skelette beider Entities müssen identisch sein.
scene Name der Bones- oder Vertes-Animationsszene ohne die abschließende Nummer, oder NULL zum Zurücksetzen von frame, nextframe und dem Skelett der Entity auf ihren jeweiligen Defaultstatus. Das Resetten des Skeletts wird vor dem Kombinieren einer Bonesanimation nötig.
prozent Prozentualer Animationsverlauf der Szene, 0..100. Bei 0 wird der erste Frame ausgewählt, bei 100 der Letzte (welcher bei zyklischen Animationen identisch mit dem Ersten ist).
mode

Wird aus den folgenden vordefinierten Werten kombiniert:

ANM_SKIP Um die Frames nicht zu interpolieren.
ANM_CYCLE Zyklische Animationsszene wie Gehen oder Rennen; andernfalls ist es eine azyklische Animation wie Springen oder Schiessen.
ANM_ADD Zum Kombinieren einer Bones-Animation aus mehreren ent_animate- Aufrufen. Neue Bones-Winkel werden zu den aktuellen Winkeln addiert, statt die gegenwärtigen Winkel durch die Neuen zu ersetzen.

Rückgabewert:

> 0 Nummer des Zielframes einer Vertex- oder Spriteszene
< 0 Nummer des Zielframes einer Bonesszene
0 Es konnte keine Szene mit dem angegebenen Namen gefunden werden

Modifiziert:

entity.frame wird auf den gegenwärtigen Frame plus Interpolationsfaktor gesetzt.
entity.next_frame wird im auf den nächsten Zielframe zur Interpolation gesetzt, oder auf 0 zurückgesetzt.

Geschwindigkeit:

Mittel (Vertex- oder Sprite-Animation)
Langsam (Bones-Animation)

Bemerkungen:

Edition:

 C   P  für Bones-Frames. Vertex und Sprite-Frames sind mit allen Editionen möglich.

Beispiele:

action vertex_anim()
{
   while() 
   {
      my.skill1 += 3*time_step;
      if (my.skill1 > 100) my.skill1 -= 100; 
      ent_animate(me,"walk",my.skill1,ANM_CYCLE);
      wait(1);
   }
}

// let a model run, and smoothly blend over to shooting when [Ctrl] is pressed
action bones_anim()
{
   while(1)
   {
      my.skill1 += 3*time_step; // torso animation
      my.skill2 += 3*time_step; // legs animation

      if (key_ctrl) // fire key pressed?
      {
         my.skill3 += 20*time_step; // blend factor for 1-frame shooting animation
         my.skill3 = min(my.skill3,100); // clip at 100 percent
      } else {
         my.skill3 -= 20*time_step;
         my.skill3 = max(my.skill3,0); // clip at 0 percent
      }

// reset skeletion and then compose the animation (order is important): 
      ent_animate(me,NULL,0,0); // reset all bones
// first, shake the arms during running
      ent_animate(me,"run_torso",my.skill1,ANM_CYCLE);
// then blend over to, or blend back from shooting (only affects the arms)
      if (my.skill3 > 0) { ent_blend("shoot",0,my.skill3); }
// finally animate the legs (only affects the legs)
      ent_animate(me,"run_legs",my.skill2,ANM_CYCLE+ANM_ADD);
     
      wait(1);
  }
}

Siehe auch:

ent_blend, pose

► Aktuelle Version Online