玩法指南
本文阐述通用运动系统中在常见游戏玩法中的使用思路。GMS包含几个简洁的API,可以帮助你快速地与你的玩法逻辑进行集成。
切换运动集
你可以在你的运动定义中设计几个不同的运动集,并在游戏运行时通过切换运动集来改变角色的控制逻辑和动画。

GMS已经内置设计了几个常见的运动集,能覆盖基础的角色控制需求。对于传统的动作/射击游戏,你可以:
- Default:角色站立时采用。
- ADS:角色站立时,按住瞄准输入时采用。
- ADS_Crouched:角色蹲下时,按住瞄准输入时采用。
- Guard:角色站立时,且装备了近战武器时,按住防御输入时采用。
- Guard_Crouched:角色蹲下时,且装备了近战武器时,按住防御输入时采用。
每一个运动集采用不同的运动控制和动画,当你装备不同的武器时,你只需要替换不同的运动定义(具备相同运动集标签,但其运动集设置不一样),其上层逻辑无需更改,即可切换控制设置和动画设置。
用程序术语来讲就是:采用运动集标签配合不同的运动定义实现多态。
举一反三
当你开发新的运动模式时,可以设计新的运动集:
- 骑马:可以设计MovementSet.Riding和MovementSet.Riding_Aim,分别对应于角色骑马时,以及角色边骑马边使用枪械/弓箭进行瞄准时的控制逻辑和动画。
- 攀爬:可以设计MovementSet.Climb和MovementSet.Climb_Aim,分别对应于角色在攀爬,以及攀爬时进行瞄准时的控制逻辑和动画。
关联运动定义

在Demo中,角色仅用简单的按键输入来切换不同的运动定义,在真实的游戏开发中,你通常需要与其它系统进行配合使用。
以武器系统举例:
每一个武器的设置中,理应添加一个运动定义字段,将武器和武器对应的运动定义进行关联。
在武器被装备时,将运动系统组件当前的运动定义切换为武器所关联的运动定义。
对于更复杂的情况,比如角色区分男女,那么你也可以为武器添加类似Male_MovementDefinition或者Female_MovementDefinition,并在武器激活时,根据角色性别选择最合适的运动定义。
切换运动状态
运动状态,指的是走,跑,疾跑等状态。

除了手动设置不同的运动状态,在GMS中,你还可以根据Actor的实际移动速度去动态调整不同的运动状态(从而应用不同运动状态下的控制和动画设置。)
比如NPC,你通过调整外部调整NPC的速度,GMS会自动匹配与该速度最接近的控制/动画设置。
提示
运动状态使用GameplayTag来标识的原因是:某些角色在某些运动模式下,可能会有更多或者更少的运动状态,因为通过GameplayTags,你可以更容易地添加新的运动状态。
切换旋转模式
在游戏中,你还会切换旋转模式。如果一个角色进入瞄准状态,你还希望切换其旋转模式到ViewDirection。这是最常见的用法。

比如战斗系统中:你锁定了一个目标,那么旋转模式应该被切换成ViewMode;如果你取消锁定一个目标,那么应该变成VelocityMode。
比如远程武器中:你按住右键时,你的旋转模式应该被设置为ViewMode。
角色朝向控制
GMS有自己的旋转系统,Character的旋转方式会根据旋转模式的不同,采用运动控制设置中的不同旋转设置。
在运动模式(LocomotionMode)为Grounded以及InAir的前提下,旋转模式为VelocityDirection时,Character会面朝Velocity的方向,旋转模式为ViewDirection时,Character会面朝ControlRotation的方向。
更多请查看运动控制设置。
AI朝向控制
当你想手动控制AI角色的朝向时,你应当将角色的旋转模式设置为ViewDirection,并通过设置ControlRotation来更新角色应该面朝的方向。
你也可以调用GMS_CharacterMovementSysytem组件上的以SetRotation开头的API去直接控制角色的旋转。
切换叠层模式

响应事件
当你调用运动系统组件上的不同的函数,会触发对应的事件,允许你针对操作结果做出响应。

例如:当你从瞄准运动集(导致角色进入走路状态)切回默认运动集后,你希望角色回到小跑的状态。那么你可以进行如下操作:

其他可用API
在GMS中,所有常用的API都以GMS为开头进行了分类,你可以在蓝图中的ContextAction列表中敲入GMS以查看所有可用的API。
