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

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,三处改动位置

完成以上则能做到效果。

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

http://www.xdnf.cn/news/10097.html

相关文章:

  • C++ 5.29 dddd
  • 【深度剖析】义齿定制行业数字化转型模式创新研究(上篇2:痛点和难点分析)
  • AI智能监控系统:赋能厂区安全管理的数智化革新
  • [Dify] 如何应对明道云API数据过长带来的Token超限问题
  • OAuth协议中的Token、Ticket
  • (NAT64)IPv6网络用户访问IPv4网络服务器(动态映射方式)
  • Linux服务器时间同步——Chronyd
  • MyBatis动态SQL
  • Baklib知识中台驱动业务创新
  • 【HarmonyOS 5】鸿蒙中的UIAbility详解(二)
  • 深化生态协同,宁盾身份域管完成与拓波软件兼容互认证
  • 19、Python字符串高阶实战:转义字符深度解析、高效拼接与输入处理技巧
  • 2.2.1 05年T4
  • Python 连接 MinIO (一)
  • wsl2 docker重启后没了
  • Cobra CLI 工具使用指南:构建 Go 语言命令行应用的完整教程
  • 激励电平与频差的微妙平衡:晶振选型不可忽视的细节
  • C#和VisionPro联合编程-硬币正反面检测
  • SL3038 宽耐压150V降压12V2.5A、5V2.5A降压恒压电源芯片
  • 用户界面禁忌——基础原则
  • 函数指针和指针函数的核心区别
  • iOS 获取Wifi信息
  • 重温经典算法——冒泡排序
  • 国产分子动力学引擎——GPUMD本地部署教程:专为 NVIDIA GPU 加速设计
  • leetcode:372. 超级次方(python3解法,数学相关算法题)
  • litctf2025复现
  • [mcu]系统频率
  • 【GESP真题解析】第 16 集 GESP 二级 2024 年 9 月编程题 1:数位之和
  • LangChain 和 LangChain-ChatChat 的区别
  • 【题解-洛谷】B4295 [蓝桥杯青少年组国赛 2022] 报数游戏