输入控制设定

输入控制设定

输入控制设定,是一个类型为GIPS_InputControlSetup的数据资产,主要由两部分组成。

  • 输入检测器:自定义逻辑,用于决定角色在特定状态下能够响应的输入事件。
  • 输入处理器:如果输入检测器允许当前的输入,那么输入处理器则负责针对输入事件进行实际的处理。

动态添加/移除输入控制设定

输入系统组件允许默认配置一个或者多个输入控制设定,同时你也可以在游戏运行时动态添加/移除输入设定。(比如角色骑马时,使用另外一个输入控制设定,下马后还原。)

注意:最后一个加入的Setup,会成为当前Setup。


gips input control setup 1

输入检测器

内置输入检测器

下面是一些内置的输入检测器,它具备一定的通用性。

InputChecker_TagRelationship


gips input control setup input checker

此检测器,适用于实现了GameplayTagAssetInterface的Actor或者Component使用。

一旦有输入发生,它会根据角色所拥有的GameplayTags,依次找到满足TagQuery的Relationship,并检查当前的输入事件是否在允许的输入列表中,如果输入事件不被允许,则该输入会被缓存或者直接拒绝。

注意:如果TriggerEvents为空,则意味着允许任意输入事件,否则只有指定的输入事件能够通过检测。

如果你的项目使用GAS(GameplayAbilities),你可以通过蓝图或者C++继承一份它,并覆写“GetActorTags”函数,使之通过AbilitySystemComponent返回角色当前所拥有的GameplayTags。

下图是一个案例:


创建你自己的输入检测器

如果内置的输入检测器不满足你的需求,你也可以通过建立自己的输入检测器,以实现各种类型的输入判定。

只需要创建一个新的继承自GIPS_InputChecker的蓝图或者C++文件,并覆写DoCheckInput函数即可。

输入处理器

输入处理器允许你以可复用的方式去处理游戏中的各种输入,每一个输入控制设定都可以关联多个输入处理器。

下图是一个经典的魂类战斗游戏的输入控制设定案例。


gips input control setup processor
拿其中的AttackInput举例,它使用的是可复用的输入处理器(GAS:ProcessAbilityInput),当与InputTag.Attack所关联的InputAction产生输入后,该处理器会根据TriggerEvents的类型,尝试去激活AbilitiesToActivate列表中第一个可以被激活的Ability。
拿MoveForward/Backword举例,它使用的是可复用的输入处理器(Basic:ThirdPersonMove),当与InputTagMove所关联的InputAction产生输入后,会让玩家进行移动。

你可以选择任意自定义的可复用输入处理器,你可以可以创建属于你自己的输入处理器(见后文)

创建你自己的输入处理器

创建一个新的蓝图GGF_IP_Character_Jump,该蓝图继承自GIPS_InputProcessor,IP是InputProcessor的简写。

每一个InputProcessor蓝图可以针对InputAction的不同输入事件进行处理,其中Started和Completed是最常用的,你还可以覆写CheckCanHandleInput来决定该输入是否有效。

为了具备可复用性,输入处理器一般只处理逻辑部分,你添加的公开变量,和默认值,都是可以在实例上进行修改配置的。


gips input control setup create own
注意:你同样可以在C++新建自定义的输入处理器,只需要覆盖C++层面的对应事件。