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上:参数设置:
源工程分享:http://url.cn/M34hur