Unity-Live2d(表情系统,姿势动作与口型功能的实现)

Unity-Live2d

概述:这是我学习Unity中Live2d的相关操作的一个笔记,欢迎各位同好和大牛的指点。(参考siki学院出的视频学的)

表情系统

  • Unity种live2D的表情系统与动作系统其实比较类似,所以这里贴上动作系统笔记蓝链做参照 动作系统笔记,所以在这个笔记中我就大略演示下代码好了
  • 首先我们需要定义出:表情文件的导入,表情实体,表情管理具体代码示例如下:
//表情文件
public TextAsset[] expressionFiles;
//表情实体
public L2DExpressionMotion[] expressions; 
//表情管理(表情管理与动作管理用的是同一个类)
private MotionQueueManager expressionMotionQueueManager;
  • 接着是进入start方法内进行实例化,加载表情文件(手动拖拽 json类型表情文件挂载到expressionFiles数组上),表情文件转化为表情实体
    具体演示代码如下:
//表情管理的实例化
expresionMotionQueueManager = new MotionQueueManager();
//表情实体数组的实例化
expressions = new L2DExpressionMotion[expressionFiles.Length];
//表情的实体化
for(int i=0;i
  • 最后就是将动作挂载到表情管理上写上对应的测试代码,测试播放我们的表情就好了
if(Input.GetKeyDown(KeyCode.M))
        {
            motionIndex += 1;   //计数器加
            if(motionIndex>expressions.Length)
            {
                motionIndex = 0;
            }
            //改变表情管理所绑定表情
            expressionMotionQueueManager.startMotion(expressions[motionIndex]);
        }
        //模型参数更新
        expressionMotionQueueManager.updateParam(live2DModel);
  • 注: 这里出现一个问题,当测试一套表情之后,会发现人物某些表情细节不会再变回来了,这里是因为表情中有一个参数在表情改变时是累加的,加上去之后不会自动回来。关于这个问题的话,再之后的开发中我们直接使用官方提供的框架去写就好了。(所以该问题暂时搁置即可)

姿势动作与口型功能的实现

  • 姿势动作的实现中有需要注意的是,有些动作的变化幅度比较大,诸如将两侧的手臂拉到胸前做成一个抱胸的动作,对于live2D模型显然有些难搞,所以我们就需要“四只手”,对没错,需要四只手来实现,俩只放在胸前,俩只放在身体两侧,不需要用的两只便使用代码隐藏掉即可,隐藏模型一部分我们用到之前提到过的,模型部分透明度设置,需要用到模型类里内置的一个方法——live2DModel.setPartsOpacity();这个方法里我们需要用的有俩个参数,第一个为所需要设置的部分的ID,第二个为设置的透明度。
  • 口型功能实现的话,有俩种方法,一种是先封装一份口型张合的动作,然后适时调用,一种是需要了解java,ios什么的一些内置API,用其去读取播放音频的波段,再读出对应音频数据去设置口型参数。(骚操作学不来学不来,溜了溜了)

你可能感兴趣的:(Unity3D学习,Unity,Live2D)