【Unity2D:Animator】角色移动时播放对应的动画

一、制作动画混合树

1. 打开Window->Animation->Animator,打开动画编辑窗口

2. 点击想要编辑动画的游戏对象

3.  在动画编辑窗口中新建一个混合树

二、通过动画控制器编辑动画在合适的时机播放 

1. 点击加号,新建两个Parameters(参数)LookX,LookY(图中是MoveX和MoveY)

2. 右键混合树,添加4个Motion(动作)

3. 修改BlendType(混合类型)的属性为2D Simple Directional(2D简单方向)

4. 将4个Motion添加刚刚制作的4个AnimationClip资源

5. 将两个参数调整为LookX和LookY(图中是MoveX和MoveY)

6. 调整两个参数的值

7. 按照相同的方法再制作一个Idle混合树

 8. 返回上一级,设置Idle混合树为层级默认状态

9. 选中Idle混合树,点击Make Transition,再点击Move行为树,使Idle状态可以切换到Move状态

10. 再使Move状态到Idle状态也建立连接

11. 新建一个浮点型的Speed参数,点击Idle到Move的箭头,新建一个Conditions(条件)

12. 将条件设置为Speed大于0.1

13. 同理,将Move变为Idle的条件设置为Speed小于0.1

三、编辑Ruby脚本

注:在以下代码中,只显示本章节新编辑的代码,其他代码均省略

1.  定义二维向量lookDirection,表示Ruby的朝向

public class Ruby : MonoBehaviour{
    // Ruby的朝向
    private Vector2 lookDirection = new Vector2(0, -1); // 初始时Ruby面朝下方
}

2. 在Update方法中定义二维向量move表示要移动的方向和大小

public class Ruby : MonoBehaviour{
    // Ruby的朝向
    private Vector2 lookDirection = new Vector2(0, -1); // 初始时Ruby面朝下方

    void Update(){
        // horizontal和vertical分别是水平和竖直方向位移的大小
        Vector2 move = new Vector2(horizontal, vertical);
    }
}

3. 当Ruby移动时,重新设置Ruby的朝向并进行归一化处理;给Animator组件中的参数赋值

public class Ruby : MonoBehaviour{
    // Ruby的朝向
    private Vector2 lookDirection = new Vector2(0, -1); // 初始时Ruby面朝下方

    void Update(){
        // horizontal和vertical分别是水平和竖直方向位移的大小
        Vector2 move = new Vector2(horizontal, vertical);

        // 当Ruby移动时
        if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {
            lookDirection.Set(move.x, move.y);
            lookDirection.Normalize(); // 对向量lookDirection进行归一化处理,使每个方向的值变为(-1,1)范围内的小数
        }
        // 给Animator组件中的参数赋值
        animator.SetFloat("LookX", lookDirection.x);
        animator.SetFloat("LookY", lookDirection.y);
        animator.SetFloat("Speed", move.magnitude);
    }
}

        本章完。 

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值