Unity2d人物移动+动画控制
Posted ZERO_BEYOND
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity2d人物移动+动画控制相关的知识,希望对你有一定的参考价值。
混合动画
private Vector2 lookDir = new Vector2(0, -1); private Vector2 move = new Vector2(0, 0); void Update() //移动 float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); //方向 move = new Vector2(horizontal, vertical); //判断是否近似相等 if (!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) lookDir = move; //归一化 lookDir.Normalize(); //将值传入控制人物动画切换 GetComponent<Animator>().SetFloat("Look X", lookDir.x); GetComponent<Animator>().SetFloat("Look Y", lookDir.y); //求模,判断是否在移动 GetComponent<Animator>().SetFloat("Speed", move.magnitude); Vector2 _pos = transform.position; _pos += speed * move * Time.deltaTime; //限制移动范围 _pos = new Vector2(Mathf.Clamp(_pos.x,-27,32), Mathf.Clamp(_pos.y, -10, 20)); //刚体控制移动 GetComponent<Rigidbody2D>().MovePosition(_pos);
3D人物移动控制实现方案
要控制3D人物在3D世界中进行正常的移动、转向,一般有两种情况:
- 1.使用人物动画控制人物 的移动 转向
- 2.使用脚本控制人物 的移动、转向
对方案一:
- Animator 组件勾选上 Apply Root Motion 选项
- 人物动画必须要有相应的位移
- 人物需要挂上一个 Rigidbody组件,做对应的物理碰撞检测
- 人物身上需要挂一个 碰撞盒,做碰撞检测的范围定制
对方案二:
- Animator 组件去掉 Apply Root Motion选项
- 人物动画有没有 位移均可
- 人物身上不需要挂载 Rigidbody组件
- 人物身上需要挂载一个 Charactor Controller 组件,做对应碰撞检测
- 使用脚本 设置 Charactor Controller组件来控制人物移动旋转。
以上是关于Unity2d人物移动+动画控制的主要内容,如果未能解决你的问题,请参考以下文章
unity2d用上下左右移动人物的情况下,怎么把Y轴移动的值赋给Z轴(比如Y改变5,Z跟着改变8)