在Unity中使用Live2d插件02 播放动画,动画优先级设置

这篇博客介绍了如何在Unity中使用Live2D插件播放动画并设置动画优先级。首先,通过实例化动作对象和加载mtn文件来加载动画。然后,使用动画队列管理器和优先级管理器来控制多个动画的叠加和状态切换。当按下特定按键时,可以改变模型的动画状态,实现动画状态机的简易控制。
摘要由CSDN通过智能技术生成

继续01篇的内容,在unity中加载入小姐姐后,此时她还只是一张图片,并不会动,这时就需要引入配套的动画。

实例化动作对象 加载mtn文件

//这是直接加载mtn文件的方法
live2DMotionIdle = Live2DMotion.loadMotion(Application.dataPath + "");
//这是加载二进制文件的方法
TextAsset mtnFile = Resources.Load<TextAsset>("");
live2DMotionIdle =  Live2DMotion.loadMotion(mtnFile.bytes);

定义一个TextAsset数组,用于存储动作的二进制文件,定义一个 Live2DMotion数组,用于存贮由二进制文件加载的动作 

这个动作的二进制文件由此得来:在Epsilon/Epsilon/runtime/motions下面有许多mtn文件,CTRLcv复制粘贴得到副本,在副本后面加上.bytes变为二进制文件,再从unity的inspector视口拖入。

public TextAsset[] motionFiles;

    //动作数组
private Live2DMotion[] motions;
 //将读入的motion文件加载入对应的Live2DMotion数组中
        motions = new Live2DMotion[motionFiles.Length];
        for (int i = 0; i < motions.Length; i++)
        {
            motions[i] = Live2DMotion.loadMotion(motionFiles[i].bytes);
        }

接下来可以单独设置每一个动画的属性

  //重复播放时是否淡入,动作跨度大设置可以看起来更自然 参数为bool
   motions[0].setLoopFadeIn(false);//重复播放不淡入
  //设置淡入淡出时间
  //淡出,不设置默认值也为1000毫秒。
   motions[0].setFadeOut(1000);
  //淡入
   motions[0].setFadeIn(1000);
  //设置动画是否循环播放
   motions[0].setLoop(true);

播放动画还需要一个动画队列的管理器,定义一个motionQueueManager对象

//动作管理队列,管理动画的播放
    private MotionQueueManager motionQueueManager;

使用startMotion设置播放的动画 

 motionQueueManager = new MotionQueueManager();
 //播放动画
 motionQueueManager.startMotion(motions[0]);

在update中更新状态,由于动画和模型是对应的,需要为管理器指定哪一个模型播放动画

  motionQueueManager.updateParam(live2DModel);

动画是可以叠加的,比如角色动嘴没动手时,可以为手指定动作,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值