Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- class MyAnimController : MonoBehaviour {
- public Queue<int> queuedStateHashes = new Queue<int>();
- private int currentStateHash;
- public string defaultState;
- public Animator theAnimator;
- bool buttonPressed = false;
- int buttonNumber = 1;
- AnimatorStateInfo info;
- private void Awake() {
- currentStateHash = Animator.StringToHash(defaultState);
- //StartCoroutine(PlayStates());
- }
- //how you start and exit this is up to you, in this case,
- //I'll assume it starts on awake
- //private IEnumerator PlayStates() {
- // while (true) {
- // SetAnimStates();
- //
- // yield return null;
- // }
- //}
- private void SetAnimStates() {
- info = theAnimator.GetCurrentAnimatorStateInfo(0);
- if (info.normalizedTime >= 1 && queuedStateHashes.Count > 0) {
- currentStateHash = queuedStateHashes.Dequeue();
- print("starting");
- theAnimator.Play(currentStateHash, 0, 0);
- }
- else if (queuedStateHashes.Count == 0) {
- //queuedStateHashes.Enqueue(currentStateHash);
- }
- //print(queuedStateHashes.Count);
- }
- private void Update() {
- if (buttonPressed) {
- buttonPressed = false;
- switch (buttonNumber) {
- case 1: queuedStateHashes.Enqueue(Animator.StringToHash("Anim4")); break;
- case 2: queuedStateHashes.Enqueue(Animator.StringToHash("Anim4")); break;
- case 3: queuedStateHashes.Enqueue(Animator.StringToHash("Anim5"));
- queuedStateHashes.Enqueue(Animator.StringToHash("Anim6")); break;
- case 4: queuedStateHashes.Enqueue(Animator.StringToHash("Anim8")); break;
- case 5: queuedStateHashes.Enqueue(Animator.StringToHash("Anim7")); break;
- default: queuedStateHashes.Enqueue(Animator.StringToHash(defaultState)); break;
- }
- //queuedStateHashes.Enqueue(stateHash);
- }
- SetAnimStates();
- }
- public void pressButton(int number) {
- buttonPressed = true;
- buttonNumber = number;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment