Jump to content
Unity Insider Forum

Stoppen einer Animation


coldstone

Recommended Posts

Hallo zusammen,

wie kann ich nach einer erfülllung der if-Bedingung eine Animation stoppen?

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Timeline;

public class collisionPO : MonoBehaviour
{
    public string test;
    public UnityEvent onRaycastHit;
    public GameObject pfeilO;
    public GameObject pfeilR;
    public GameObject pfeilU;
    public GameObject pfeilL;
    public AnimationClip stop;
    AudioSource audio;

  // Start is called before the first frame update
    void Start()
    {
        audio = GetComponent<AudioSource>();
    }
  
    // Update is called once per frame
    void Update()
    {

    }

    internal void FireCollision()
    {
        if (pfeilO.gameObject.GetComponent<Renderer>().material.color != Color.red)
        {
            onRaycastHit.Invoke();

            Debug.Log("Collision Detected");
            pfeilO.gameObject.GetComponent<Renderer>().material.color = Color.red;
            audio.Play(0);
         }
    }    
}

Habe mir in der doku den AnimationClip angeschaut, der hat aber keine funktion um die Animatio zu stoppen.

Lediglich "Animation" selber besitzt eine methode "stop()". Wenn ich Animation nutze, dann kann ich im Inspector meine Animation nicht hinzufügen.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Willst du echt das uralte Animationssystem nutzen und mit Animationsclips arbeiten?
Das willst du nicht!
Nutze den Animator Controller!
https://docs.unity3d.com/ScriptReference/Animator.html

https://docs.unity3d.com/Manual/Animator.html

 

Es gibt unendlich viele Tutorials dazu im Netz und er ist auch leicht zu bedienen.
Der Animator ist eine Komponente, die deinem Gameobject, welches irgendwas animieren will, hinzugefügt werden muss. Wie welche Animation abgespielt werden soll, stellst du im Animator ein. Dafür gibt es ein eigenes Fenster in dem du deine Animationen arrangierst und Mit Transitions verbindest. Die Transitions, also die Bedingungen um von einer Animation zur Nächsten zu gelangen, stellst du ganz einfach nach eigenen Wünschen ein. Du musst lediglich ein paar Parameter im Animator erzeugen, und sie vom Code aus ansprechen.
Und wenn eine Animation gestoppt werden soll, dann hält sie eigentlich nicht an, sondern geht in eine andere Animation über. Also von einem State zum anderen. Ja und da reicht es schon aus, einen leeren State zu erstellen.

Dafür musst du natürlich, eigentlich wie immer, ersteinmal den Animator bekannt machen, also eine Referenz bilden.
 

public Animator myAnim; // Animator einfach hier rein ziehen

Und im Code kannst du dann ganz leicht den Parametern im Animator gewisse Werte geben.

myAnim.SetBool("walk",true);
// oder
myAnim.SetTrigger("stop");

Das sind jetzt nur Beispiele. Die Art des Parameters (trgger, bool, int, float) und dessen Namen musst du natürlich selber einstellen. 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb malzbie:

Willst du echt das uralte Animationssystem nutzen und mit Animationsclips arbeiten?

Es gibt sogar Unity-Mitarbeiter, die deutlich sagen: Das alte Animationssystem hat immer noch Platz in Projekten. So ist z.B. die Performance gerade bei weniger komplexen Animationssystemen wesentlich besser. Mecanim haut wohl jeden Frame ein komplexes Update durch die Statemachine durch. Für so simple Sachen wie zwei Tür-Animationen ist die alte Animation-Komponente nach wie vor absolut in Ordnung. Erst mit steigender Komplexität oder einer Anforderung mit IK wird Mecanim sehr schnell wertvoller.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich glaube das ist eher eine Frage der Philosophie. Ich persönlich habe keine signifikanten Performanceveränderungen zum alten System festgestellt.
Aber das wichtigste an dem neue System ist die Tatsache, dass ich irre viel Zeit für die Entwicklung spare sobald es mal mehr als 3 Animationen sind. Und es werden garantiert mehr als 3 Animationen. ;)
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...