Unity---动画系统学习(3)---使用状态机来实现走、跑、转弯等的动画切换
1. 初始设置
用动画学习笔记(2)中方法,把动画全都切割好。
拖进状态机并设置箭头。并设置具体箭头触发的事件。
在状态机左侧中添加参数,Float和Int类型参数只能从-1~1之间变化
Float:Speed,控制行走
Bool:IsSpeedUp,控制加速
Float:Horizontal,控制转弯
2. 代码设置
private int speedID = Animator.StringToHash("Speed");
private int isSpeedID = Animator.StringToHash("IsSpeedUp");
private int horizontalID = Animator.StringToHash("Horizontal");
private Animator anim;
void Start () {
anim = gameObject.GetComponent<Animator>();
}
void Update () {
anim.SetFloat(speedID, Input.GetAxis("Vertical"));
if (Input.GetKeyDown(KeyCode.LeftShift))
{
anim.SetBool(isSpeedID, true);
}
else if (Input.GetKeyUp(KeyCode.LeftShift))
{
anim.SetBool(isSpeedID, false);
}
anim.SetFloat(horizontalID, Input.GetAxis("Horizontal"));
}
anim.SetFloat();:给参数赋值
Input.GetAxis("Vertical");:Unity中自带的按键返回函数,当按下W和S键或↑↓键时,会返回正负的小数,按键时间长短影响大小。
像Vertical这样的虚拟轴在Edit---Project Setting---Input中设置
Animator.StringToHash;:把Speed字符串转化为HashID。
private int speedID = Animator.StringToHash("Speed");
anim.SetFloat(speedID, Input.GetAxis("Vertical"));
==>等效于
anim.SetFloat("Speed", Input.GetAxis("Vertical"));
这样转换后更不容易出错,更高效,推荐使用!!!!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步