【Unity】新手初学Animation实现人物移动
需求:开发影院系统,希望加入Avatar人物,在其中行走和坐下
环境:Unity2021.3
-
新手初学Animation教程:BV1BW41187fL
Avatar人物模型资源:学长网盘链接分享
Animation动作资源:浏览器搜索mixamo
-
开发流程
-
对坐标:XZ为平面、Y为竖直方向
-
Avatar、Scripts、Animations、Controller
-
人物下添加Control脚本、CapsuleCollider、RigidBody
-
调整Animaton Type要一致
-
新建AnimatorController并拖拽给人物
-
固定Animation的Y,防止上移动
-
编辑AnimatorController
- 左侧添加Bool的Parameters
- 选中箭头,右侧添加Condition
-
编辑Script
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerControl : MonoBehaviour { private Animator ani; // Start is called before the first frame update void Start() { ani = GetComponent<Animator>(); } // Update is called once per frame void Update() { float vertical = Input.GetAxis("Vertical"); float horizontal = Input.GetAxis("Horizontal"); Vector3 dir = new Vector3(horizontal, 0, vertical); if(dir != Vector3.zero) { transform.rotation = Quaternion.LookRotation(dir); transform.Translate(Vector3.forward * 2 * Time.deltaTime); ani.SetBool("Walking", true); } else { ani.SetBool("Walking", false); } if(Input.GetKeyDown(KeyCode.L)) { ani.SetBool("Sitting", true); } else if(Input.GetKeyDown(KeyCode.O)) { ani.SetBool("Sitting", false); } } }
-
选中箭头,取消勾选HasExitTime
-
同理加上Sit
注意:Avatar和Animator资源 Rig下的Animaton Type要一致(如都设置为Humanoid),否则不起作用
-
-
问题:加上动作后人物会飞起来
解决:选中动作资源 - Inspector中的
RootTransformPostion(Y)
勾选BakeIntoPose
注意:如果勾选后仍会飞,重启Unity可解决大部分这种情况
-
问题:按下按键后动作切换不及时
原因:切换的条件:(1)当前动画播放完(2)满足切换条件
解决:选中切换的箭头,取消勾选Has Exit Time
如有帮助,麻烦动动手指点一下赞,感谢!