Jump to content
Unity Insider Forum

Animator und mehr auslesen


Recommended Posts

Hallo zusammen,

 

weiß Jemand wie man die Position der

playback head (the red line)
auslesen kann?

https://docs.unity3d...tionEditor.html

 

Ebenso frage ich mich, ob man abfragen kann, welcher Clip / AnimatorState ausgewählt ist.

 

Ich kann über folgenden Schnippsel einige Infos auslesen, aber noch weiß ich nicht wie man genau die Informationen bekommt, die ich im Screenshot markiert habe.

 

Animator anim = GetOrAddAnimator();
	if (anim != null)
	{
		AnimatorController ac = anim.runtimeAnimatorController as AnimatorController;
		for (int x = 0; x < anim.layerCount; x++)
		{
			AnimatorStateMachine sm = ac.layers[x].stateMachine;
			if (x == 0)
			{
				string defaultStateName = sm.defaultState.name;
				string stateName = sm.name;
				if (Logger.Instance.IsLogging) Debug.Log("AnimatorInfo[" + sm.name + "].Gather: DefaultStateName:" + defaultStateName);
			}
			for (int i = 0; i < sm.states.Length; i++)
			{
				ChildAnimatorState state = sm.states[i]; //Alle States aka Clips
			}
		}
	}

 

Ich denke da an sowas ähnliches wie

Selection.activeGameObject

. Selbstverständlich in abgewandelter Form.

 

post-3816-0-99947500-1475505865_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bevor du jetzt versuchst alle möglichen Stadien im Animator und/oder im Animationsfenster auszulesen, stell dir doch mal die Frage, was du überhaupt erreichen willst.

Es ist doch so, dass du eine Animation startest, wenn ein gewisses Event eingetreten ist. Da das Event eingetreten ist, weisst du schon mal welche Animation denn gerade läuft. Genauso gehts du von dieser Animation ja über Transitions in eine andere Animation über. Und in jeder Transition werden ja auch Bedingungen abgefragt. Also weißt du in der Regel auch, welche Folgeanimation jetzt gerade läuft.

Der Animator muss dir also nicht sagen, welche Animation gerade läuft, sondern er führt nur das aus was du ihm sagts oder eingestellt hast. Das wäre ja genauso, als würde dein Lenkrad dir ständig Info über den Lenkwinkel geben, nachdem du es selber da hin gedreht hast.

 

Wenn du gewisse Dinge mit einer Animation synchronisieren willst, kannst du Animationsevents in die Animationsspur rein tun. Wenn das Event erreicht wurde wird von da in eine Funktion eines Scripts gesprungen und dein Code weiß dass diese Position erreicht wurde. Nachteil: Das Script muss in der selben Hierachie wie der Animatior sein. Also kein Parent oder Kind von diesem GO.

Ja und dann kannst du noch Animationskurven erstellen die wiederum den Wert in eine Variable vom Animator schreiben, die du ja nicht nur setzen sondern auch auslesen kannst.

Das ist alles viel einfacher, als genau zu wissen, an welchem Frame von welcher Animation man gerade ist und dann im Code ständig den Framecount mit irgendwelchen abgespeicherten Werten vergleicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich möchte aber, dass das auto selbst fährt und das lenkrad steuert, um bei deinem Beispiel zu bleiben :D

 

"Wenn du gewisse Dinge mit einer Animation synchronisieren willst, kannst du Animationsevents in die Animationsspur rein tun."

 

das klingt interessant, jedoch kann ich mir noch nichts dazu vorstellen.

 

ich möchte die KeyFrames auslesen und dann was machen.

genauer gesagt:

 

ich hab einen Animator und n Animationen.

zB eine Idle Animation. nun wähl ich die Idle Animation im Animation-Window aus und beweg die rote Linie zu keyFrame 3 und dann will ich .. jetzt wird glaube gerade n schuh raus.

 

was meinst du mit Animationevents? evtl die KeyFrames?

 

wenn ich die KeyFrames auslesen kann, dann sollte eig alles geritzt sein - natürlich an der stelle, an der die rote linie ist. dadurch kann ich den Clip (AnimationState heißt es glaube ich) auslesen etc. (Im Editor - nicht zur Laufzeit)

 

Sinn dahinter ist:

ich hab ein Script, dass mir für 2D Sprites einen passenden Collider generiert (PixelPerfect nenn ich das mal). nun möchte ich den Clip mit den ColliderPoints in Verbindung setzen. damit das relativ sauber läuft, möchte ich direkt das Object (typeof(AnimationState)) auslesen. jetzt weißt du auch was ich vorhabe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...