06633f08-72eb-44c7-bcff-1224395443c8

与GameplayAbilities配合使用。

avatar`
Yuewu(罗传月武)
Updated: May 28, 2025

介绍

Mover和GAS目前是两个独立的系统。但它们都有属于自己的网络预测、输入机制。

而目前官方提供的资源中,只有泰坦项目充分展示了GAS和Mover如何搭配使用。

泰坦项目分析

本文分析泰坦项目中的一些运动行为是如何通过GAS和Mover配合实现的,供你参考。

属性

泰坦在属性部分,没有使用GameplayAttribute。

输入

采用DA配置InputAction->Tag的映射,并在InputAction回调中以Action为Key查到对应的Tag,然后作为GameplayEvent发送给ASC。

EventTag则是输入Tag,InstigatorTags包含输入的类型,按下,启动中,还是松开。

冲刺

Sprint作为被动的LocalOnly技能实现,当输入按下/松开触发时,修改的是TitanPawn上用于生成Mover输入参数的缓存值。

瞄准

Aim作为被动的LocalOnly技能实现,并监听输入事件

跳跃


思维拓展

我认为,PorduceInput时,要为所有输入类型定义对应的bool来决定按下与否有些繁琐重复。

可以用一个Tag容器,InputAction事件回调直接往Tag容器添加对应输入标签。ProduceInput中直接检查某输入Tag是否存在来判定输入是否按下。

避免使用CharacterMoverComponent

Mover插件中内置了CharacterMoverComponent,并封装了Crouch(通过StanceModifer),Jump行为。这个类试图平替原本的Character类所具备的能力。而Mover插件中的其他代码并没有对CharacterMovementComponent和StanceModifer产生大量引用。

因此,我建议避免使用CharacterMoverComponent,转而使用更加纯粹的MoverComponent。

然后,其他的行为如Jump,Crouch等,采用GAS实现。

使用GAS代理MoverComponent输入层

Mover的默认MovementSet(Walking,Falling,)

除了CharacterDefaultInputs所封装的基础控制

logo_small
罗传月武

© 罗传月武 @2025 版权所有.