Unity C# 動畫結束判定

 

  • 此篇重點語法 * * * * *

Animator.GetCurrentAnimatorStateInfo( 0 ).IsName( " 播放的動畫名稱 " )

  e.g. Animator.GetCurrentAnimatorStateInfo(0).IsName("Over");

 

   1.  用途:偵測目前撥放的動畫名稱

   2.  數字(0):數字表示為動畫的第0層

   3.  動畫名稱:表示為要偵測的動畫名稱,偵測是否正在播放該動畫

 

 

  • 此篇效果-效果名稱 當爆炸動畫撥放結束後令正方體進行旋轉

     

 

 

-  大概了解重點後,接下來進入完整教學   -

 

                        一、在一個空物件上建置一個簡易的2D爆炸動畫" Explode "

                        (這裡先省略2D動畫製作過程,本篇著重在於如何判定動畫結束)

                       

 

 

                          二、在播放動畫物件的Animator中新增一個新的動畫叫做" Over "

                        並且從 " Explode "動畫拉一個Transition至" Over "上

                       

 

 

                        三、接下來從" Over "動畫拉一個Transition至" Exit "上讓動畫進行循環

                        接下來我們就可以來偵測動畫的結束時間了。

                       

 

 

                        四、接下來我們在播放動畫的物件上新增一段程式碼

                        using System.Collections;
                        using System.Collections.Generic;
                        using UnityEngine;

                        public class Tutotial : MonoBehaviour {

                                 //宣告一個用來旋轉的Cub物件與一個Animator來控制動畫
                            public GameObject Cub;
                            public Animator Anim_player;


                           //讓Animator抓取自身的Animator
                           void Start()
                            {
                                Anim_player = GetComponent<Animator>();
                           }


                            void Update()
                           {

                                //若播放的動畫為Over時讓物件Cub進行旋轉
                                if (Anim_player.GetCurrentAnimatorStateInfo(0).IsName("Over"))
                                {
                                    Cub.transform.Rotate(10, 0, 0);
                                }
                            }
                        }

 

                        五、再來我們在場景中新增一個Cube物件,並將他拖曳至剛剛那支程式碼上的Cub欄位。

                       

                                

 

 

                        六、接下來按下Play就可以看到當爆炸動畫結束後,Cub物件就會旋轉(此時再撥放Over動畫)

                當Cub物件停止旋轉後,又會開始爆炸周而復始,效果會以下面影片方式進行呈現。

                       

 

 

  • 複習重點語法 * * * * *

      Animator.GetCurrentAnimatorStateInfo( 0 ).IsName( " 播放的動畫名稱 " )

  e.g. Animator.GetCurrentAnimatorStateInfo(0).IsName("Over");

 

   1.  用途:偵測目前撥放的動畫名稱

   2.  數字(0):數字表示為動畫的第0層

   3.  動畫名稱:表示為要偵測的動畫名稱,偵測是否正在播放該動畫

 

                         

  • 結語 * * * * *

                               這次教學的C#語法雖然不能直接判定某個動畫是否播放結束,但我們可以透過設定動畫撥放順序

        來確認動畫是否播放完畢。

        (  例如   播放" Over "動畫代表" Explode "動畫剛播放完畢 )。

                              若我們可以透過這個語法來確認當前播放的動畫,就可以利用程式碼來進行進階的動畫控制。

          

 

 

 

----------------------------------------------------------------------------------------------------

●     如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !  

●     對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!  

 

- By Alex -

 

arrow
arrow

    『迷途』 發表在 痞客邦 留言(0) 人氣()