JirkaDellOro / FUDGE_Story

A FUDGE module for the easy development of interactive stories, visual novels and simple adventure games
https://jirkadelloro.github.io/FUDGE_Story/
7 stars 9 forks source link

Animationen global nutzen #10

Closed Rina14 closed 3 years ago

Rina14 commented 3 years ago

Möglichkeit schaffen, dass Animationen nur einmal definiert werden müssen, um diese in allen Szenen verwenden zu können.

JirkaDellOro commented 3 years ago

Ich habe ein wenig reingeschaut und es ist am besten, wenn die Lösung auf Autorenseite hergestellt wird. Das Problem ist, dass die Positionen erst berechnet werden können, wenn Progress.go ausgeführt wird und damit die ganze Szenerie eingerichtet wurde. Beim Start des Programms sind die Dimensionen noch nicht bekannt, erst wenn alles fertig geladen wurde etc.

Also ist es am geschicktesten, wenn die Animation erst definiert wird, wenn sie gebraucht wird. Das erreicht man einfach, in dem man also nicht bei Programmstart ein Objekt definiert wird, sondern eine Funktion, die auf Anfrage ein solches Objekt definiert und liefert .Ich denke, das ist dann auch eine ganz gute Hinführung für die Leute um eigene Funktionen zu schreiben, mit denen sie dann auch ganz andere Problemstellungen lösen können.

Ich habe das mal in meinem Test eingebaut:


  export function getAnimation(): ƒS.AnimationDefinition {
    return {
      start: { translation: ƒS.positions.bottomleft, rotation: -20, scaling: new ƒS.Position(0.5, 1.5), color: ƒS.Color.CSS("white", 0) },
      end: { translation: ƒS.positions.bottomright, rotation: 20, scaling: new ƒS.Position(1.5, 0.5), color: ƒS.Color.CSS("red") },
      duration: 1,
      playmode: ƒS.ANIMATION_PLAYMODE.REVERSELOOP
    };
  }

und in einer Szene dann den Aufruf

    await ƒS.Character.animate(characters.Sue, characters.Sue.pose.normal, getAnimation());

Mit Hilfe von Funktionsparametern kann man so auch ähnliche Animation leicht variieren.

Rina14 commented 3 years ago

Siehe #2