現在のステートの情報はAnimatorクラスのGetCurrentAnimationStateInfo()で取得する。
取得した値(AnimationStateInfo)には、現在のステートに関する幾つかの値が含まれている。
ただし、この値からステートの名前は直接知ることは出来ない模様。
予め比較対象のステート名からハッシュを取得しておき、nameHashプロパティの値と比較することで、どのステートに居るかを知る。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Animator _anim; int _stateCardFace, _stateJumpCard; void Awake() { this._anim = GetComponent<Animator>(); this._stateCardFace = Animator.StringToHash("Base Layer.CardFace"); this._stateJumpCard = Animator.StringToHash("Base Layer.JumpCard"); } public void JumpCard(bool start) { AnimatorStateInfo anim = this._anim.GetCurrentAnimatorStateInfo(0); if (start) { if (anim.nameHash == this._stateCardFace) { this._anim.SetTrigger("JumpStart"); } return; } if (anim.nameHash == this._stateJumpCard) { this._anim.SetTrigger("JumpStop"); } } |
7, 8行目 2つのステートのハッシュをレイヤー名とステート名から取得。
13行目 現在のステート情報を取得。
16, 22行目 現在のステートのハッシュと予め取得してあったステートのハッシュと比較。
[…] 説明はこちら 要は次のコードでクリアできます。 […]