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 -