🚀 春季促销开始! 🚀 不要错过以7折优惠购买我所有系统的机会! 

点击购买

动画叠层系统

介绍

GMS包含两种类型的叠层系统,本文更详细的展示一些叠层制作案例。

基于栈的叠层系统

这是基于栈的叠层系统的案例,取自配套项目中的Overlay_Mannequin叠层设置。

Sword叠层

采用OverlayStack方式制作剑盾的Locomotion。

下图是以MovementSet.Unarmed(Lyra的Unarmed的Locomotion)为基础,并以Paragon的Greystone的动作来混合出的剑/盾动作。

GMS动画叠层系统.001

其中第一层是在非待机状态下,在角色的上半身播放剑/盾的移动动作。

GMS动画叠层系统.002

第二层则是在待机状态下,在角色的上半身播放剑/盾的待机动作。

GMS动画叠层系统.003

下图是混合出的效果:

条件性叠层

同样采用OverlayStack方式制作叠层,但是这次是具备特定条件时动态选择动画进行混合。

下图配置在了在地面情况下,满足条件时,在不同部位播放不同的动作混合。

GMS动画叠层系统.005

第一层是默认情况下(无条件),在角色上半身播放Dance动画。

GMS动画叠层系统.006

第二层则是在Injured状态下,在角色的左手部位播放Injured动画。

GMS动画叠层系统.007

第三层则是在Handtied状态下,在角色的上半身播放手被捆绑的动画。

GMS动画叠层系统.007.5

然后我在关卡中设置了两个触发器,分别为角色添加10秒的Injured状态和5秒的HandTied状态。

GMS动画叠层系统.008

在叠层设置为OverlayMode.Demo的情况下,效果如下:

你可以看到,如果同时有Injured和HandTied状态,会优先播放HandTied(因为它是Overlays数组中优先级最高的动作),当HandTied状态消失后,又会回到Injured的状态,当Injured状态小时候,则回到上半身跳舞的动作。

视频参考

基于姿势的叠层系统

概述

此叠层系统的关键在于:在不同的情况下,采用不同姿态的单帧Pose并与基础的Locomotion动画进行混合,同时通过动画曲线来控制混合的权重。如果你使用过ALS,你应该对此很熟悉。但在GMS中,对这一项功能进行了改进。

为姿势添加曲线修改器

GMS提供一个动画修改器:AM_CreateLayeringCurves帮助你快速创建动画曲线。

曲线说明

GMS动画叠层系统.010

非Additive的曲线:

决定该部位的Pose的采用程度(开关,比如LayerArmLeft=0就完全不用左臂的Pose,LayerArmLeft=1就是完全采用左臂的Pose)。

带Additive的曲线:

决定当前的Locomotion在叠了一层Pose后的保留程度(LayerArmLeftAdditive=1表示Pose完全覆盖了左手动作,LayerArmLeftAdditive=0.5表示Locomotion还会保留一半)。

案例

这是基于姿势的叠层系统的案例,取自配套项目中的MS_Mannequin_ALS

使用基于姿势的动画Overlay层

首先,在你的运动集设置上,你应该选择“GMS Anim Layer Setting Overlay Pose Based”。

GMS动画叠层系统.011

然后你可以为其添加多个OverlayModes,你应该在你的游戏中,根据切换不同的武器从而切换不同的OverlayMode。

GMS动画叠层系统.012

Bow的叠层(简单类型)

这个叠层采用的是简单类型

GMS动画叠层系统.013

当OverlayMode为Bow时,会以BasePose为基础,然后在Idle时用A_GMS_Bow_Poses在时间为0.15那一帧的动作与当前的Locomotion动作进行混合。在移动时,用A_GMS_BowPoses在时间为0.183那一帧的动作与当前的Locomotion动作进行混合。

没有OverlayMode时的效果:

开启Bow OverlayMode时的效果:

你只通过2个单帧动画就实现了这个效果,而不需要一整个动画包

分层的叠加姿势(复杂类型)

除了简单版本,你还可以使用复杂版本,即采用LayeredPoseSetting,它会根据角色当前的Tags从上往下查找第一个满足条件的姿势并应用。

GMS动画叠层系统.014

效果如下:

当然,你需要根据你的游戏,进行更有意义地配置。

拿弓箭手举个例子:在某些情况下,比如警戒情况下,弓箭手持弓的姿态会动态进行改变。

如果你愿意添加多个OverlayMode,那么你也可以不需要采用分层的叠加姿势。

从头创建新的OverlayMode

你也可以查看此视频得知我是如何从头创建新的叠层模式的(从3.05分开始观看):

如何选择?

大多数情况下,你可以混用两者,即:

  1. 你有多个动画包,但是动画包A有一些动画包B没有的动作,而动画包B又有一些动画包A没有的动作,这时候你可以通过栈叠层来弥补之间的缺失。
  2. 你也可以有一个质量较高的徒手动画包,且比较中性,然后采用徒手运动集设置配合多个不同的OverlayMode,实现不同姿态的动作。

你甚至可以:

  1. 一个运动定义中的不同的运动集采用不同的叠层系统。
  2. 外部系统去影响角色的动画表现,比如给予角色不同的Buff,从而添加不同的GameplayTags并影响动画;比如角色在不同的天气区域,给予角色不同的GameplayTags,并让角色动作对天气作出反应。

如果你满足如下情况,更倾向于使用栈叠层:

  1. 你有来自不同作者的不同动画包,或者你有专门的动画师。
  2. 你需要通过不同的动作去展示角色的个性。

如果你满足如下情况,更倾向于使用姿势叠层:

  1. 你有一个质量较高的徒手动画包,且比较中性。
  2. 你资金短缺,更注重功能性而不是个性化。