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

网站优化 方案网络推广关键词优化公司

网站优化 方案,网络推广关键词优化公司,学做网站 空间 域名,WordPress整篇文章登录可见文章目录创建升龙拳的Tag以及受力被动的Tag创建升龙技能将升龙技能添加到角色中创建一个击飞被动,供升龙激活技能为技能添加冷却以及消耗创建升龙拳的Tag以及受力被动的Tag 给这个技能添加标签 CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Ability_Uppercut_Launc…

文章目录

  • 创建升龙拳的Tag以及受力被动的Tag
  • 创建升龙技能
    • 将升龙技能添加到角色中
    • 创建一个击飞被动,供升龙激活技能
  • 为技能添加冷却以及消耗


创建升龙拳的Tag以及受力被动的Tag

给这个技能添加标签

CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Ability_Uppercut_Launch)
CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Ability_Passive_Launch_Activate)
UE_DEFINE_GAMEPLAY_TAG_COMMENT(Ability_Uppercut_Launch, "Ability.Uppercut.Launch", "升龙拳攻击")
UE_DEFINE_GAMEPLAY_TAG_COMMENT(Ability_Passive_Launch_Activate, "Ability.Passive.Launch.Activate", "击飞被动技能激活")

CGameplayAbility中添加绘制Debug的布尔变量(暂时对我没的没什么用)

	UFUNCTION()FORCEINLINE bool ShouldDrawDebug() const { return bShouldDrawDebug; }
private:UPROPERTY(EditDefaultsOnly, Category = "Debug")bool bShouldDrawDebug = false;

创建升龙技能

添加上勾拳(升龙拳)技能,命名为UpperCut
在这里插入图片描述

// 幻雨喜欢小猫咪#pragma once#include "CoreMinimal.h"
#include "GAS/Core/CGameplayAbility.h"
#include "UpperCut.generated.h"/*** */
UCLASS()
class CRUNCH_API UUpperCut : public UCGameplayAbility
{GENERATED_BODY()
public:	// 激活技能时调用virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override;
private:// 上勾拳动画MontageUPROPERTY(EditDefaultsOnly, Category = "Animation")TObjectPtr<UAnimMontage> UpperCutMontage;// 启动击飞效果UFUNCTION()void StartLaunching(FGameplayEventData EventData);
};
// 幻雨喜欢小猫咪#include "UpperCut.h"#include "Abilities/Tasks/AbilityTask_PlayMontageAndWait.h"void UUpperCut::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo,const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData)
{if (!K2_CommitAbility()){K2_EndAbility();return;}// 服务器执行if (HasAuthorityOrPredictionKey(ActorInfo, &ActivationInfo)){UAbilityTask_PlayMontageAndWait* PlayUpperCutMontageTask = UAbilityTask_PlayMontageAndWait::CreatePlayMontageAndWaitProxy(this, NAME_None, UpperCutMontage);PlayUpperCutMontageTask->OnBlendOut.AddDynamic(this, &UUpperCut::K2_EndAbility);PlayUpperCutMontageTask->OnCancelled.AddDynamic(this, &UUpperCut::K2_EndAbility);PlayUpperCutMontageTask->OnCompleted.AddDynamic(this, &UUpperCut::K2_EndAbility);PlayUpperCutMontageTask->OnInterrupted.AddDynamic(this, &UUpperCut::K2_EndAbility);PlayUpperCutMontageTask->ReadyForActivation();UAbilityTask_WaitGameplayEvent* WaitLaunchEventTask = UAbilityTask_WaitGameplayEvent::WaitGameplayEvent(this, TGameplayTags::Ability_Uppercut_Launch);WaitLaunchEventTask->EventReceived.AddDynamic(this, &UUpperCut::StartLaunching);WaitLaunchEventTask->ReadyForActivation();}
}void UUpperCut::StartLaunching(FGameplayEventData EventData)
{if (K2_HasAuthority()){// 获取命中目标的数量int32 HitResultCount = UAbilitySystemBlueprintLibrary::GetDataCountFromTargetData(EventData.TargetData);for (int32 i = 0; i < HitResultCount; ++i){// 获取每个命中的HitResultFHitResult HitResult = UAbilitySystemBlueprintLibrary::GetHitResultFromTargetData(EventData.TargetData, i);UE_LOG(LogTemp, Warning, TEXT("HitActorName:  %s"), *HitResult.GetActor()->GetName())}}
}

将升龙技能添加到角色中

蓝图继承并创建
在这里插入图片描述
在这里插入图片描述
直接复制基础攻击增加一个技能一
在这里插入图片描述
添加到映射中
在这里插入图片描述

将技能添加到角色中
在这里插入图片描述

创建一个击飞被动,供升龙激活技能

添加一个新的类GAP_Launched,作为击飞的被动技能
在这里插入图片描述

// 幻雨喜欢小猫咪#pragma once#include "CoreMinimal.h"
#include "GAS/Core/CGameplayAbility.h"
#include "GAP_Launched.generated.h"/*** 被击飞能力类* 用于处理角色被击飞时的特殊能力逻辑*/
UCLASS()
class UGAP_Launched : public UCGameplayAbility
{GENERATED_BODY()
public:// 构造函数UGAP_Launched();// 激活能力时调用virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData) override;// 获取击飞激活事件Tagstatic FGameplayTag GetLaunchedAbilityActivationTag();
};
// 幻雨喜欢小猫咪#include "GAP_Launched.h"#include "GAS/Core/TGameplayTags.h"UGAP_Launched::UGAP_Launched()
{// 设置网络执行策略为仅在服务器端执行NetExecutionPolicy = EGameplayAbilityNetExecutionPolicy::ServerOnly;// 创建一个新的触发数据对象FAbilityTriggerData TriggerData;// 设置触发数据的触发源为游戏事件TriggerData.TriggerSource = EGameplayAbilityTriggerSource::GameplayEvent;// 设置触发数据的触发标签为击飞被动技能激活标签TriggerData.TriggerTag = TGameplayTags::Ability_Passive_Launch_Activate;// 将创建好的触发数据添加到能力触发器列表中AbilityTriggers.Add(TriggerData);
}void UGAP_Launched::ActivateAbility(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo,const FGameplayAbilityActivationInfo ActivationInfo, const FGameplayEventData* TriggerEventData)
{if (!K2_CommitAbility()){K2_EndAbility();return;}if (K2_HasAuthority()){// 推自己PushSelf(TriggerEventData->TargetData.Get(0)->GetHitResult()->ImpactNormal);K2_EndAbility();}
}FGameplayTag UGAP_Launched::GetLaunchedAbilityActivationTag()
{return TGameplayTags::Ability_Passive_Launch_Activate;
}

CGameplayAbility中添加推动自身的力

	// 推动自己(如击退/击飞)void PushSelf(const FVector& PushVel);void PushTarget(AActor* Target, const FVector& PushVel);// 获取拥有者角色指针ACharacter* GetOwningAvatarCharacter();
private:// 缓存的拥有者角色指针UPROPERTY()TObjectPtr<ACharacter> AvatarCharacter;
void UCGameplayAbility::PushSelf(const FVector& PushVel)
{ACharacter* OwningAvatarCharacter = GetOwningAvatarCharacter();if (OwningAvatarCharacter){OwningAvatarCharacter->LaunchCharacter(PushVel, true, true);}
}void UCGameplayAbility::PushTarget(AActor* Target, const FVector& PushVel)
{// 目标为空则返回if (!Target) return;FGameplayEventData EventData;// 创建单目标命中数据对象FGameplayAbilityTargetData_SingleTargetHit* HitData = new FGameplayAbilityTargetData_SingleTargetHit;// 配置命中结果参数FHitResult HitResult;HitResult.ImpactNormal = PushVel; // 设置冲击方向为力的方向HitData->HitResult = HitResult;EventData.TargetData.Add(HitData);// 用标签激活技能UAbilitySystemBlueprintLibrary::SendGameplayEventToActor(Target, UGAP_Launched::GetLaunchedAbilityActivationTag(), EventData);
}ACharacter* UCGameplayAbility::GetOwningAvatarCharacter()
{if (!AvatarCharacter){AvatarCharacter = Cast<ACharacter>(GetAvatarActorFromActorInfo());}return AvatarCharacter;
}

回到升龙技能中,实现力技能的添加,再添加一个伤害效果

    // 上勾拳击飞阶段的伤害效果UPROPERTY(EditDefaultsOnly, Category = "Launch")TSubclassOf<UGameplayEffect> LaunchDamageEffect;// 上勾拳击飞速度UPROPERTY(EditDefaultsOnly, Category = "Launch", meta = (DisplayName = "击飞力的大小"))float UpperCutLaunchSpeed = 1000.f;
void UUpperCut::StartLaunching(FGameplayEventData EventData)
{if (K2_HasAuthority()){// 获取命中目标的数量int32 HitResultCount = UAbilitySystemBlueprintLibrary::GetDataCountFromTargetData(EventData.TargetData);// 推动自己向上PushTarget(GetAvatarActorFromActorInfo(), FVector::UpVector * UpperCutLaunchSpeed);for (int32 i = 0; i < HitResultCount; ++i){// 获取每个命中的HitResultFHitResult HitResult = UAbilitySystemBlueprintLibrary::GetHitResultFromTargetData(EventData.TargetData, i);PushTarget(HitResult.GetActor(), FVector::UpVector * UpperCutLaunchSpeed);ApplyGameplayEffectToHitResultActor(HitResult, LaunchDamageEffect, GetAbilityLevel(CurrentSpecHandle, CurrentActorInfo));}}
}

为角色添加基础技能,因为是通过tag触发的,所以不用管输入
在这里插入图片描述
创建一个GE
在这里插入图片描述
在这里插入图片描述
然后一个升龙拳双方都起飞了
在这里插入图片描述

为技能添加冷却以及消耗

创建一个tag表示升龙的冷却,在冷却标签存在的时间内是无法再次使用此技能。

CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Ability_Uppercut_Cooldown)
UE_DEFINE_GAMEPLAY_TAG_COMMENT(Ability_Uppercut_Cooldown, "Ability.Uppercut.Cooldown", "升龙拳技能冷却")

创建一个GE来设置拥有持续时间,在GA的冷却中添加该GE
在这里插入图片描述
将CD添加到GA中
在这里插入图片描述
创建一个GE作为开销
在这里插入图片描述
在这里插入图片描述
用技能就会耗蓝了
在这里插入图片描述

http://www.dtcms.com/wzjs/242943.html

相关文章:

  • c 网站开发 pdf好用的搜索引擎
  • 建设网站要求哪里备案站长素材音效网
  • 学校文化建设的网站营销关键词有哪些
  • 做一元云购网站如何快速收录一个网站的信息
  • 学校网站怎么下载不了郑州官网网站推广优化公司
  • 虚拟云主机 wordpress网站优化排名提升
  • wordpress相册打造的视频弹出湖南seo优化哪家好
  • 东莞专业做网站怎样把个人介绍放到百度
  • 网站文章添加网站推广投放
  • 政府网站建设先进个人推广普通话手抄报
  • 怎么做恶搞人的网站营销组合策略
  • 外贸是先做网站还是做阿里巴巴杭州专业seo公司
  • 全网营销型网站汕头seo外包平台
  • 网站开发数据库动态管理百度推广关键词质量度
  • 网站做网页seo导航站
  • 河北网站设计公司seo智能优化公司
  • 网站建设哪家公司比较好国内5大搜索引擎
  • 大型网站技术架构演进与性能优化百度关键字优化价格
  • 友情网站制作百度浏览器官网下载并安装
  • 龙岗建站费用深圳网络营销推广公司
  • 个人动态网站如何制作网站免费建站
  • 高中教做网站的软件百度推广中心
  • 东莞招聘网站seo排名关键词点击
  • 音乐网站建设的意义最新的销售平台
  • 苹果电脑做网站设计面点培训学校哪里有
  • 专业网络营销外包公司郑州网站seo顾问
  • WordPress重力表单注册抖音seo怎么做
  • 网页上做ppt的网站看广告赚钱一天50元
  • 小程序定制公司推荐广州seo优化外包服务
  • 百度信息流平台关键词优化排名费用