当前位置: 首页 > news >正文

RPG17.蓝图函数库与轻重攻击连击

1.创建蓝图函数库

2.

XMBWarriorFunctionLibrary.h


#pragma once#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "AbilitySystem/XMBAbilitySystemComponent.h"
#include "XMBWarriorFunctionLibrary.generated.h"UENUM()
enum class EXMBWarriorConfirmType : uint8
{Yes,No
};/*** */
UCLASS()
class ARPG_GRIVITY_API UXMBWarriorFunctionLibrary : public UBlueprintFunctionLibrary
{GENERATED_BODY()
public:static UXMBAbilitySystemComponent* NativeGetXMBPlayerASCFromActor(AActor* InActor);UFUNCTION(BlueprintCallable, Category = "XMBWorrior|FunctionLibrary")static void AddGameplayTagToActorIfNone(AActor* InActor, FGameplayTag TagToAdd);UFUNCTION(BlueprintCallable, Category = "XMBWorrior|FunctionLibrary")static void RemoveGameplayFromActorIfFound(AActor* InActor, FGameplayTag TagToRemove);static bool NativeDoesActorHaveTag(AActor* InActor, FGameplayTag TagToCheck);UFUNCTION(BlueprintCallable, Category = "XMBWorrior|FunctionLibrary", meta = (DisplayName = "Does Actor Have Tag", ExpandEnumAsExecs = "OutConfirmType"))static void BP_DoesActorHaveTag(AActor* InActor, FGameplayTag TagToCheck, EXMBWarriorConfirmType& OutConfirmType);
};

XMBWarriorFunctionLibrary.cpp

// Fill out your copyright notice in the Description page of Project Settings.#include "XMBWarriorFunctionLibrary.h"
#include "AbilitySystemBlueprintLibrary.h"
#include "AbilitySystem/XMBAbilitySystemComponent.h"UXMBAbilitySystemComponent* UXMBWarriorFunctionLibrary::NativeGetXMBPlayerASCFromActor(AActor* InActor)
{check(InActor);//从Actor中获取ASC//在内部检查是否实现了IAbilitySystemInterfacereturn Cast<UXMBAbilitySystemComponent>(UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(InActor));
}void UXMBWarriorFunctionLibrary::AddGameplayTagToActorfNone(AActor* InActor, FGameplayTag TagToAdd)
{UXMBAbilitySystemComponent* ASC = NativeGetXMBPlayerASCFromActor(InActor);if (ASC->HasMatchingGameplayTag(TagToAdd)){ASC->AddLooseGameplayTag(TagToAdd);}
}void UXMBWarriorFunctionLibrary::RemoveGameplayFromActorIfFound(AActor* InActor, FGameplayTag TagToRemove)
{UXMBAbilitySystemComponent* ASC = NativeGetXMBPlayerASCFromActor(InActor);if (ASC->HasMatchingGameplayTag(TagToRemove)){ASC->RemoveLooseGameplayTag(TagToRemove);}
}bool UXMBWarriorFunctionLibrary::NativeDoesActorHaveTag(AActor* InActor, FGameplayTag TagToCheck)
{UXMBAbilitySystemComponent* ASC = NativeGetXMBPlayerASCFromActor(InActor);return ASC->HasMatchingGameplayTag(TagToCheck);
}void UXMBWarriorFunctionLibrary::BP_DoesActorHaveTag(AActor* InActor, FGameplayTag TagToCheck,EXMBWarriorConfirmType& OutConfirmType)
{OutConfirmType = NativeDoesActorHaveTag(InActor, TagToCheck) ? EXMBWarriorConfirmType::Yes : EXMBWarriorConfirmType::No;
}

3.接下来轻重攻击,做成的效果是:当轻击第三下后,再点击重击,此时打出重击最后一下。

打开GA_LightAttack,三处改动位置

打开GA_HeavyAttack,三处改动位置

完成以上则能做到效果。

(将来会使用类似的方法添加更多攻击动画和函数库函数用于不同类型攻击间的搭配、转换、伤害计算等效果)

相关文章:

  • electron安装报错处理
  • 华为OD机试真题——阿里巴巴找黄金宝箱(III)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • C/C++ OpenCV 矩阵运算
  • 【解决】firewalld 模块未识别
  • Android 之 kotlin 语言学习笔记二(编码标准)
  • UniApp微信小程序自定义导航栏实现
  • Delphi 导入excel
  • Android开发常用Kotlin高级语法
  • Kotlin Multiplatform与Flutter深度对比:跨平台开发方案的实战选择
  • 【机器学习基础】机器学习入门核心算法:随机森林(Random Forest)
  • 人工智能在智能零售中的创新应用与未来趋势
  • cutlass学习教程
  • 美团启动618大促,线上消费节被即时零售传导到线下了?
  • Axure设计案例——科技感渐变线性图
  • C语言文件读取中文乱码问题解析与解决方案
  • 汽车EPS系统的核心:驱动芯片的精准控制原理
  • ubuntu22.04安装docker
  • (二)开启深度学习动手之旅:先筑牢预备知识根基
  • 小白的进阶之路系列之六----人工智能从初步到精通pytorch数据集与数据加载器
  • HTML 计算网页的PPI
  • 网站建设怎么申请域名/app营销策略有哪些
  • 庐山网站建设/北京seo平台
  • 郑州网页设计/济南网站seo哪家公司好
  • 广州网站建设信科网络/免费注册网址
  • 企业专业网站设计公/网站搭建公司哪家好
  • 哪里有做企业网站的/免费的企业黄页网站