启用淡入淡出循环运动运动(CubismMotionController)

[最近更新时间: 2020/02/07]

概述

使用 Cubism Viewer for OW 循环播放动作时,如果选中“循环播放期间淡入”,则当动作从结尾返回到开头时,将发生 Cubism 动作淡入和参数淡入。
参考:运动设定

但是,如果您将 true 传递给 CubismMotionController.PlayAnimation() 的 Cubism SDK  for Unity 的参数 isLoop 以循环运动,则从结尾返回到开头时不会发生淡入淡出。

通过使用存在于 CubismMotionController 中并在运动播放结束时调用的回调,您可以通过从回调中再次播放相同的运动来生成淡入淡出并循环运动。

要进行上述设定,请按照以下步骤为例。

  • 将 Cubis 运动控制器附加到模型
  • 创建脚本执行循环播放处理

以下说明是基于对已执行 [Import SDK] 的项目执行的假设。

 

将 Cubis 运动控制器附加到模型

将 CubismMotionController 附加到作为放置在场景中的 Cubism Prefab 的根的 GameObject。

如果已附加,则无需再次附加。
此时,如果附加了使用 CubismMotionController 播放动作的组件,请注意与以下设定的干扰。

此外,将 CubismFadeController.CubismFadeMotion 设定为 .fadeMotionList,其中注册了要循环播放的 AnimationClip 的 ID。

 

 

创建脚本执行循环播放处理

在项目视窗中创建一个 C# 脚本。

在这里,名称是“CubismMotionLoopPlayer”。

 

将创建的脚本附加到与 Prefab 的 CubismMotionController 相同的级别。

 

使用文本编辑器打开创建的脚本并重写描述如下。

 

选择场景上的 Prefab,将 AnimationClip 设定为循环播放到 检查器 视窗中的 CubismMotionLoopPlayer.Animation。

 

如果您使用上述设定播放场景,运动将循环播放,但在循环过程中不会出现淡入淡出。

 

CubismMotionController 有一个函数来注册一个回调函数,以便在动画播放结束时调用。

 

通过使用这个,上面提到的CubismMotionLoopPlayer不是直接循环播放的,而是在动作播放结束时重新播放相同的动作。
如果将true传递给CubismMotionController.PlayAnimation()的isLoop,则不会调用CubismMotionController.AnimationEndHandler的回调。

 

这样就完成了设定。

如果您在这种状态下播放场景,动作将淡出并循环播放。

© 2010 - 2022 Live2D Inc.