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

UE5多人MOBA+GAS 17、制作小兵的动画蓝图、攻击GA以及死亡和复活的AI感知开关

文章目录

  • 给小兵做一个动画蓝图
  • 制作小兵的攻击GA以及动画
  • 创建GC_Hit作为受击特效的父类
  • 小兵死亡和复活的AI感知开启与关闭


给小兵做一个动画蓝图

添加小兵素材,给小兵创建一个动画蓝图
在这里插入图片描述
在这里插入图片描述
给小兵换动画蓝图以及模型
在这里插入图片描述

制作小兵的攻击GA以及动画

给AI做普通攻击
在这里插入图片描述
在这里插入图片描述
在小兵蓝图更换GA
在这里插入图片描述
制作GA用的蒙太奇(还是用回作者的老路了)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在创建一个GE应用伤害
在这里插入图片描述
在这里插入图片描述
小兵就可以挥刀砍我了
在这里插入图片描述

创建GC_Hit作为受击特效的父类

创建一个可复用的GC_Hit(其实我更喜欢传值进去)
在这里插入图片描述
让机器人的Hit继承他
在这里插入图片描述
再修改一下特效
在这里插入图片描述
给小兵设置受击GC
在这里插入图片描述
新增后修改父类
在这里插入图片描述
伤害GE中添加GC(这个受击动画不出意外应该是用一个接口给传了,一个个做太麻烦了)
在这里插入图片描述
给小兵写一个初始化GE,调整他的血条(其实给小兵蓝也没用,这玩意没蓝)
在这里插入图片描述
在这里插入图片描述
顺便调整一下小兵的移速
在这里插入图片描述

小兵死亡和复活的AI感知开启与关闭

CAIController中添加启用和禁用感知的函数,以及监听死亡标签的函数,在服务器初始化的时候监听tag标签

	// 清除并禁用所有感知(如死亡时调用)void ClearAndDisableAllSenses();// 启用所有感知(如复活时调用)void EnableAllSenses();// 监听Pawn死亡Tag变化,控制AI逻辑启停void PawnDeadTagUpdated(const FGameplayTag Tag, int32 Count);
void ACAIController::OnPossess(APawn* InPawn)
{Super::OnPossess(InPawn);// 随便设置的队伍SetGenericTeamId(0);IGenericTeamAgentInterface* PawnTeamInterface = Cast<IGenericTeamAgentInterface>(InPawn);if (PawnTeamInterface){PawnTeamInterface->SetGenericTeamId(GetGenericTeamId());//SetGenericTeamId(PawnTeamInterface->GetGenericTeamId());}UAbilitySystemComponent* PawnASC = UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(InPawn);if (PawnASC){PawnASC->RegisterGameplayTagEvent(TGameplayTags::Stats_Dead, EGameplayTagEventType::NewOrRemoved).AddUObject(this, &ACAIController::PawnDeadTagUpdated);}
}
void ACAIController::ClearAndDisableAllSenses()
{// 老化所有感知刺激到最大时间值,强制标记为过期状态AIPerceptionComponent->AgeStimuli(TNumericLimits<float>::Max());// 遍历所有感知配置并禁用它们for (auto SenseConfigIt = AIPerceptionComponent->GetSensesConfigIterator(); SenseConfigIt; ++SenseConfigIt){AIPerceptionComponent->SetSenseEnabled((*SenseConfigIt)->GetSenseImplementation(), false);}if (GetBlackboardComponent()){// 消除黑板中的目标值GetBlackboardComponent()->ClearValue(TargetBlackboardKeyName);}
}void ACAIController::EnableAllSenses()
{// 遍历所有感知配置并启用它们for (auto SenseConfigIt = AIPerceptionComponent->GetSensesConfigIterator(); SenseConfigIt; ++SenseConfigIt){AIPerceptionComponent->SetSenseEnabled((*SenseConfigIt)->GetSenseImplementation(), true);}
}void ACAIController::PawnDeadTagUpdated(const FGameplayTag Tag, int32 Count)
{if (Count != 0){GetBrainComponent()->StopLogic("Dead"); // 停止死亡状态下的逻辑ClearAndDisableAllSenses(); // 清除感知数据}else{GetBrainComponent()->StartLogic(); // 重新启动AI逻辑EnableAllSenses(); // 启用感知系统}
}

去到角色CCharacter中在死亡的时候取消激活的技能

void ACCharacter::StartDeathSequence()
{OnDead();// 取消激活的技能if (CAbilitySystemComponent){CAbilitySystemComponent->CancelAllAbilities();}
}
http://www.dtcms.com/a/272215.html

相关文章:

  • Ajax之核心语法详解
  • Vue Vue-route (4)
  • Ubuntu基础(Python虚拟环境和Vue)
  • 堆的应用(讲解超详细)
  • Uniapp中的uni.scss
  • 2025.07.09华为机考真题解析-第一题100分
  • 【VLAs篇】05:RDT模型结构和流程分析
  • HTML颜色定义
  • 深入了解Modbus TCP:工业通信的“通用语言”
  • Docker-构建镜像并实现LNMP架构
  • C语言 | 函数核心机制深度解构:从底层架构到工程化实践
  • 西电考研录取:哪些省份考研上岸西电更容易?
  • PyTorch Tensor 的创建与操作入门
  • 低版本hive(1.2.1)UDF实现清除历史分区数据
  • 1.1.1数据类型与变量——AI教你学Django
  • 基于Uniapp+MySQL+PHP的景区多商户小程序源码系统 带完整的搭建指南
  • vue引入应用通义AI大模型-(一)前期准备整理思路
  • idea如何打开extract surround
  • 【CPU】不同核数下的翻译
  • hbuilder开发app记录
  • ReaLTaiizor:WinForms 界面设计利器
  • 《未来已来:当人类智慧遇上AI智能体》
  • 【WPF实战】MVVM中如何从数据模型反查自定义控件实例(ImageView + Halcon)
  • 学习开发之条件函数
  • 如何用 LangChain 自定义 Chat Model —— 测试工程师实践指南
  • Maven生命周期:构建流程深度解析
  • eVTOL动力测试台架气动干扰分析与应对措施
  • TestCafe ➜ Playwright fixture 架构迁移指南
  • 上位机与Modbus的32位数据交互
  • 嘿嘿嘿嘿嘿