1.首先導入模型及模型動畫:,其中man02爲不帶動畫的模型,man02@xx爲帶改模型帶對應的動畫的。
2.模型man02放入場景,設置模型:,
然後設置avatar:,
其他帶動畫的模型的Avatar設置:。
3.創建一個角色控制器:
然後將該角色控制器賦給場景中的角色:
。
4.打開Animator視圖:
5.設置Animator:
6.設置動畫播放條件:
walk -> run:
run -> walk:
。
7.控制腳本:
using UnityEngine;
using System.Collections;
public class PlayGUI : MonoBehaviour
{
public Transform transform;
public GUIContent[] guiContents;
private Animator animator;
private string currentState = "";
void Start()
{
animator = new Animator();
animator = transform.GetComponent<Animator>();
}
void OnGUI()
{
GUILayout.BeginVertical("Box");
for (int i = 0; i < guiContents.Length; i++)
{
if (GUILayout.Button(guiContents[i]))
{
currentState = guiContents[i].text;
}
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
if (stateInfo.IsName("Base Layer.wait") && currentState.Equals("walk"))
{
animator.SetBool("WaitToWalk", true);
}
if (stateInfo.IsName("Base Layer.wait") && currentState.Equals("run"))
{
animator.SetBool("WaitToRun", true);
}
if (stateInfo.IsName("Base Layer.walk") && currentState.Equals("run"))
{
animator.SetBool("WalkToRun", true);
}
if (stateInfo.IsName("Base Layer.walk") && currentState.Equals("wait"))
{
animator.SetBool("WaitToWalk", false);
}
if (stateInfo.IsName("Base Layer.run") && currentState.Equals("wait"))
{
animator.SetBool("WaitToRun", false);
}
if (stateInfo.IsName("Base Layer.run") && currentState.Equals("walk"))
{
animator.SetBool("WalkToRun", false);
}
}
}
}
將腳本掛到camera上:參數設置:
8.最終效果:源工程分享:http://url.cn/M34hur