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.使用脚本控制人物 的移动、转向

对方案一:

  1. Animator 组件勾选上 Apply Root Motion 选项
  2. 人物动画必须要有相应的位移
  3. 人物需要挂上一个 Rigidbody组件,做对应的物理碰撞检测
  4. 人物身上需要挂一个 碰撞盒,做碰撞检测的范围定制

对方案二:

  1. Animator 组件去掉 Apply Root Motion选项
  2. 人物动画有没有 位移均可
  3. 人物身上不需要挂载 Rigidbody组件
  4. 人物身上需要挂载一个 Charactor Controller 组件,做对应碰撞检测
  5. 使用脚本 设置 Charactor Controller组件来控制人物移动旋转。

以上是关于Unity2d人物移动+动画控制的主要内容,如果未能解决你的问题,请参考以下文章

Unity2D敌人/怪物AI控制 第一期

unity2d用上下左右移动人物的情况下,怎么把Y轴移动的值赋给Z轴(比如Y改变5,Z跟着改变8)

Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例

时光煮雨 Unity3D实现2D人物移动-总结篇

控制人物转向移动,动画播放的过程中插播其他动画后返回

3D人物移动控制实现方案