概述
通用运动系统完全数据驱动,你主要通过在数据资产中配置运动控制参数以及动画资产,即可完成运动的设置。
本文着重GMS中最核心的两个概念,即运动定义和运动集。
运动定义
运动定义(MovementDefinition)是一个类型为GMS_MovementDefinition的数据资产(DataAsset),是GMS的核心部分,大部分功能都集中在此配置。

你通过在编辑器下创建该类型的数据资产,并进行GMS的主要配置。
每一个运动定义可以包含多个运动集设置(MovementSetSetting),每一个运动集设置通过运动集标签来标识。

将运动定义理解为一套动画数据库,将GMS.MovmentSet.XXX理解为查询Key。
运动集设置
每一个运动集设置由游戏标签进行唯一标识,且其内容包含两部分,分别是:
- 运动控制:配置角色如何移动,如何旋转。
- 动画设置:选择角色的动画常规设置,以及不同的动画层实现方案,及其所需动画资产,配置。

运动集设置案例
下图则是根据Lyra的Unarmed动画包配置好的徒手运动定义,该运动定义拥有4个运动集设置,分别代表了角色在站立(Default),瞄准(ADS),蹲伏(Crouch)以及蹲伏瞄准(ADS_Crouched)时的不同的控制以及动画。
下图则是站立和蹲伏时用到的运动集设置:

运动定义规划
多套角色动画
当项目包含多套角色动画时,推荐以下规划方式:
单一运动定义管理整套动画
- 用途:一个 GMS_MovementDefinition 数据资产配置某角色的一整套动画资源。
- 示例:徒手、手枪、来复枪、剑、盾等不同武器/状态的动画。
- 运动集拆分:通过 MovementSetSetting 对同一套动画的变体进行细分。
动画变体示例
一个运动定义可包含以下运动集设置:
- 基础姿态:站立(Default)、蹲伏(Crouch)
- 瞄准状态:瞄准(ADS)、蹲伏瞄准(ADS_Crouched)
- 防御姿态:站立防御(Guard)、蹲伏防御(Guard_Crouched)
单套基础角色动画
当项目仅包含一套角色动画(如只有徒手动画)时,你也可以利用动画叠加系统,来为角色创造更多动画变体,从而节约所需的动画资产数量。
运行时切换
在游戏运行时,通过调用运动系统组件的 API 实现运动集切换。进一步了解玩法指南。
实际应用场景
- 武器切换:切换手枪时,激活 GMS.MovementSet.ADS 运动集。
- 姿态变化:按下防御键时,切换到 GMS.MovementSet.Guard。
- 环境适应:进入狭窄区域时,自动切换到 GMS.MovementSet.Crouch。
阅读更多
进一步了解运动控制设置。
进一步了解动画设置。
