虚幻引擎UE5专用服务器游戏开发-32 使用Gameplay Tags阻止连招触发

目标:我们上节用GameplayAbility使角色可以连击攻击,但是,当不断的按下鼠标左键时,蒙太奇动画又重新开始播放,使得动画很怪异,现在要解决这个问题,当蒙太奇播放时,再按鼠标左键时,蒙太奇不会重新播放.

方法:可以使用标签功能

方法一:蓝图标签设置

打开蓝图:/All/Game/Character/Crunch/GameplayAbility/Combo:

GA_Combo_Crunch_BP

资产标签选择:

用标签阻止能力:

效果:

方法二:C++添加标签

Source/Crunch/Public/GAS/CAbilitySystemStatics.h:

cpp 复制代码
// Copyright@ChenChao

#pragma once

#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "CAbilitySystemStatics.generated.h"

/**
 * 
 */

UCLASS()
class CRUNCH_API UCAbilitySystemStatics : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
public:
	static FGameplayTag GetBasicAttackAbilityTag();
};

Source/Crunch/Private/GAS/CAbilitySystemStatics.cpp:

cpp 复制代码
// Copyright@ChenChao


#include "GAS/CAbilitySystemStatics.h"

FGameplayTag UCAbilitySystemStatics::GetBasicAttackAbilityTag()
{
	return FGameplayTag::RequestGameplayTag(FName("Ability.BasicAttack"));
}

我们在Config/DefaultGameplayTags.ini中添加标签:

cpp 复制代码
;METADATA=(Diff=true, UseCommands=true)
[/Script/GameplayTags.GameplayTagsSettings]
ImportTagsFromConfig=True
WarnOnInvalidTags=True
ClearInvalidTags=False
AllowEditorTagUnloading=True
AllowGameTagUnloading=False
FastReplication=False
bDynamicReplication=False
InvalidTagCharacters="\"\',"
NumBitsForContainerSize=6
NetIndexFirstBitSegment=16
+GameplayTagList=(Tag="Ability.BasicAttack",DevComment="基础攻击")

Source/Crunch/Public/GAS/GameplayAbility/GA_Combo.h:

构造函数添加标签:

cpp 复制代码
public:
	UGA_Combo();

Source/Crunch/Private/GAS/GameplayAbility/GA_Combo.cpp:

cpp 复制代码
UGA_Combo::UGA_Combo()
{
	AbilityTags.AddTag(UCAbilitySystemStatics::GetBasicAttackAbilityTag());
	BlockAbilitiesWithTag.AddTag(UCAbilitySystemStatics::GetBasicAttackAbilityTag());
}
相关推荐
爱吃生蚝的于勒5 分钟前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
我的offer在哪里38 分钟前
示例 Unity 项目结构(Playable Game Template)
unity·游戏引擎
君生我老39 分钟前
C++自写list类
c++
renke336441 分钟前
Flutter for OpenHarmony:节奏方块 - 基于时间同步与连击机制的实时音乐游戏系统设计
flutter·游戏
阿猿收手吧!1 小时前
【C++】异步编程:std::async终极指南
开发语言·c++
REDcker1 小时前
gRPC开发者快速入门
服务器·c++·后端·grpc
doupoa1 小时前
内存指针是什么?为什么指针还要有偏移量?
android·c++
冉佳驹1 小时前
C++ ——— 异常处理的核心机制和智能指针管理
c++·异常捕获·异常继承体与多态·重载抛异常·raii思想·智能指针shared_ptr·weak_ptr指针
C++ 老炮儿的技术栈1 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
yuuki2332332 小时前
【C++】继承
开发语言·c++·windows