Jump to content
Unity Insider Forum

Animation nicht gefunden


Kojote

Recommended Posts

Grüße!

Habe gerade ein kleines Problem mit der Komponente Animation. Dabei habe ich folgendes kleines Script:

private Animation anima;

private void Start() {
   anima = gameObject.GetComponent<Animation>();
}


private void OnTriggerEnter(Collider other) {
   anima.Play("Sprungbrett Animation");
}

Das Script befindet sich auf dem Objekt, auf dem auch die Komponente Animation liegt, diese hat die Animation "Sprungbrett Animation" auch zugewiesen bekommen.

Script ist einfach erklärt, dringt etwas in den Collider ein, wird OnTriggerEnter ausgelöst und es soll einmal die Animation abgespielt werden. Rein logisch, simpel, Unity hat jedoch diese Meinung:

The animation state Sprungbrett Animation could not be played because it couldn't be found!
Please attach an animation clip with the name 'Sprungbrett Animation' or call this function only for existing animations.
UnityEngine.Animation:Play(String)
SprungbrettSteuerung:OnTriggerEnter(Collider) (at Assets/Scripts/SprungbrettSteuerung.cs:22)

Habt ihr eine Ahnung, warum er die Animation nicht findet? Andere Animationen die ich der Komponente zuweise, funktionieren ebenfalls nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Normal solltest du mit der Animator-Komponente arbeiten und nicht mit "Animation": Wenn du die Animation auf das entsprechende Objekt ziehst, dann sollte Unity einen Animator erstellen und im Animator sollte deine Animation als Zustand zu sehen sein.
Hier ein Beispiel, wo er deine Animation abspielt, wenn du Space drückst.

 Animator anim;

   void Start ()
    {
        anim = GetComponent<Animator>();
    }

  void Update ()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            if (null != anim)
            {
                Debug.Log("Playing 'Sprungbrett Animation'");
                anim.Play("Sprungbrett Animation");
            }
        }
    }

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, der Animator hat einen Defaultzustand (das ist der orange Zustand) und den spielt er 1x ab, sobald der Animator aktiviert wird.
Wenn du mehrere Animationen über den Animator verwalten möchtest, dann hast du 2 Möglichkeiten.
Entweder du definierst Trigger in deinem Zustandsgraph, über die du dann die jeweilige Animation aufrufen kannst:

int jumpHash = Animator.StringToHash("Jump");

Update() {
  // Zustandsübergang über entprechenden Trigger auslösen und damit die entsprechende Animation ausführen, auf die die Transition zeigt
  anim.SetTrigger (jumpHash);
}

6VnUsl2.png
oder
- du stellst alle Animationen einzeln in den Zustandsgraph ein
- stellst den orangen Zustand auf eine leere Animation (hier einfach "Leerlauf" genannt), indem du einen leeren Zustand erstellst und diesen als Default State markierst
- und die Animationszustände dann wie oben aufrufst, in deinem Fall wenn der Trigger ausgelöst wird

cGC1kSi.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...