Unity動畫混合樹實例詳解
本文實例為大家分享了Unity動畫混合樹實例代碼,供大家參考,具體內(nèi)容如下
先看效果


游戲動畫中的一項常見任務(wù)是在兩個或更多相似運動之間進行混合。也許最熟知的示例就是根據(jù)角色的速度來混合行走和奔跑動畫。另一個示例是角色在奔跑期間轉(zhuǎn)向時向左或向右傾斜。
使用方法:
1.右鍵單擊 Animator Controller 窗口上的空白區(qū)域。 1.從顯示的上下文菜單中,選擇 Create State > From New Blend Tree。 1.雙擊混合樹 (Blend Tree) 以進入混合樹視圖 (Blend Tree Graph)。
Animator 窗口現(xiàn)在顯示整個混合樹的圖示,而 Inspector 顯示當(dāng)前選定節(jié)點及其直接子節(jié)點。

類型
1. 1D:一維的混合,一個參數(shù)控制動畫的切換。

2. 2D Simple Directional(2D簡單方向):當(dāng)你的運動代表不同的方向,如“向前走”,“向后走”,“向左走”,“向右走”,或“向上瞄準”,“向下瞄準”,“左瞄“和”右瞄“。當(dāng)然了,可以在(0,0)處包含一個默認動作類似“空閑站立”或“直線瞄準”。與1D混合樹不同的是,2D Simple Directional 不是在同一個方向上的多個動作,比如“走”和“跑”。
3. 2D Freeform Directional(2D自由方向):動畫運用有不同的方向時,也可以使用這種混合類型:可以在同一個方向上有多個運動,例如“走”和“跑”。在Freeform Directional類型中,(0,0)位置必須包含一個默認動作,如“空閑站立”。
4. 2D Freeform Cartesian(2D自由笛卡兒):當(dāng)混合的2個參數(shù)不代表不同的方向時使用。使用Freeform Cartesian,參數(shù)X和Y可以表示不同的概念類型,例如角速度和線速度。舉個例子:“向前走不轉(zhuǎn)向”,“向前跑不轉(zhuǎn)向”,“向前走并右轉(zhuǎn)”,“向前跑并右轉(zhuǎn)”等動作。
如果角色動畫包含站立、走、跑和轉(zhuǎn)向,非常符合2D Freeform Cartesian這種類型。我們的實例中就用的這個類型。
實例
實例中,我們用到了17個動畫,包含,靜止?fàn)顟B(tài),前走后走左走右走4個,左前走左后走右前走右后走4個,同理跑也是8個動畫。

使用Walk和Turn控制動畫的播放,其中Walk為PosX軸,Turn為PosY軸,在三維世界中,分別代表人物的前后移動和左右移動。我們手動輸入?yún)?shù),例如當(dāng)(-0.5,0)的時候代表向后走,(1,1)的時候代表想右前方跑。配置好混合樹以后就可以用代碼控制這些參數(shù)的變化從而播放相應(yīng)的動畫。
代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
public class RobotKyleController : MonoBehaviour
{
Animator m_Animator;
private Vector3 m_Move;
void Start()
{
m_Animator = GetComponent<Animator>();
}
private void FixedUpdate()
{
float h = CrossPlatformInputManager.GetAxis("Horizontal");
float v = CrossPlatformInputManager.GetAxis("Vertical");
if (Input.GetKey(KeyCode.LeftShift))
{
m_Move = v * Vector3.forward + h * Vector3.right;
}
else
{
m_Move =( v * Vector3.forward + h * Vector3.right)*0.5f;
}
UpdateAnimator(m_Move);
}
void UpdateAnimator(Vector3 move)
{
m_Animator.SetFloat("Walk", move.z, 0.1f, Time.deltaTime);
m_Animator.SetFloat("Turn", move.x, 0.1f, Time.deltaTime);
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標
這篇文章主要介紹了C# WPF如何反射加載Geometry幾何圖形數(shù)據(jù)圖標,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03
使用C#創(chuàng)建Windows服務(wù)的實例代碼
這篇文章主要介紹了使用C#創(chuàng)建Windows服務(wù)的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
c# 免費組件html轉(zhuǎn)pdf的實現(xiàn)過程
這篇文章主要介紹了c# 免費組件html轉(zhuǎn)pdf的實現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
C# 委托中 Invoke/BeginInvoke/EndInvoke和DynamicInvoke&
在C#中,委托(Delegate)提供了多種調(diào)用方式,包括 Invoke、BeginInvoke、EndInvoke 和 DynamicInvoke,每種調(diào)用方式都有其特定的用途和適用場景,下面將詳細介紹這些方法的區(qū)別與聯(lián)系,感興趣的朋友一起看看吧2025-03-03
在C# WPF下自定義滾動條ScrollViewer樣式的操作
這篇文章主要介紹了在C# WPF下自定義滾動條ScrollViewer樣式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

