GDPU unity游戏开发 动画状态机

每一个动画状态都演绎着你的奔赴。

动画混合

1)  前往 Mixamo选择适合的角色模型和idle/walking/backward动画并下载。确保下载时选择FBX for Unity格式。

2)  新建Unity项目,导入下载的模型。

3)  在导入模型的Inspector窗口中,选择Materials选项卡,解压纹理和材质。

4)  在带有模型的动画中,设置Rig为Humanoid,选择Avatar Definition设置为Create From This Model,并检查是否正确并保存。

5)  其他动画也设置Rig为Humanoid,并设置Avatar为上个步骤中保存的Avatar。

6)  勾选所有动画的Loop Time,使得动画可以循环播放。

7)  创建并打开Animator Controller,然后新建BlendTree,将参数设置为Floatl类型的Speed,在Motion的列表中前述添加3个动画,将动画切换参数设置为Speed,并将Threshold的值分别设置为-1(后退)/0(空闲)/1(前进)。

8)  将模型添加到场景中并改名为Player,给模型增加Animator组件,并将控制器设置为上个步骤中创建的的Animator Controller。

先登录网站下好模型动画,然后导入。接着按步骤弄好材质跟绑定。再到动画状态机,这个比较重要。

双击controller进入动画状态机,你会看到三个框,菜单有layers跟parameters。新建一个混合树状态及设置一个speed参数,注意这里的参数可用来调状态的。

 

接着双击新建好的混合树,点进去设置motion。

 

可以点击运行去改变speed值,动画状态发生的改变。当然实际不会一直让你在那调,所以写脚本根据输入控制speed参数,来调整动画的状态。在动画中混合树可以根据参数,混合多个动画,每个动画有不同的权重,这样就有了很多中间状态。当然不想混合几个行为便可以是动画过渡。

using UnityEngine;

public class PlayerController : MonoBehaviour

{
    public float speed = 2.0f;

    private Animator animator;

    void Start()

    {

        animator = GetComponent<Animator>();//获取当前游戏对象上的 Animator 组件

    }

    void Update()

    {

        float move = Input.GetAxis("Vertical");//获取垂直方向上的输入值

        animator.SetFloat("Speed", move);//将移动值 move 设置给 Animator 控制器中名为 "Speed" 的参数,用于控制动画播放速度

        Vector3 movement = new Vector3(0, 0, move);

        transform.Translate(movement * speed * Time.deltaTime);//根据移动向量 movement、移动速度 speed 和时间间隔 Time.deltaTime 来更新游戏对象的位置

    }

}

 

 

  

移动过程你会发现是有混合效果的。

实验心得

他总是把最好的糟蹋完后,才开始感概人生若只初见。

 

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值