UE5.1.1 C++从0开始(15.作业4个人作业分享)

教程链接:https://www.bilibili.com/video/BV1nU4y1X7iQ

好吧这个作业应该是之前写的,但是我发现我没写,后面我又回去自己写了一遍再看代码,感觉上大差不差,各位可以看着我的和老师的还有自己的对比下。

SBTService_CheckHealth.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "BehaviorTree/BTService.h"
#include "SBTService_CheckHealth.generated.h"

/**
 * 
 */
UCLASS()
class ACTIONROGUELIKE_API USBTService_CheckHealth : public UBTService
{
	GENERATED_BODY()
	
protected:
	UPROPERTY(EditAnywhere,Category="AI")
	FBlackboardKeySelector CheckHealthKey;

protected:
	virtual void TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) override;
	

};

SBTService_CheckHealth.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "AI/SBTService_CheckHealth.h"
#include "AIModule/Classes/AIController.h"
#include "AI/SAICharacter.h"
#include "SAttributeComponent.h"
#include "AIModule/Classes/BehaviorTree/BlackboardComponent.h"

void USBTService_CheckHealth::TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds)
{
	Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds);

	//获得黑板组件,获取上面的键值
	UBlackboardComponent* BlackboardComponent = OwnerComp.GetBlackboardComponent();

	//先获得AI的角色
	//我这里就不像教程写的那样每一步都用一个ensure了
	AAIController* MyController = OwnerComp.GetAIOwner();
	ASAICharacter* AICharacter = Cast<ASAICharacter>(MyController->GetCharacter());
	//拿到我们的attributecomp
	USAttributeComponent* AttributeComp = USAttributeComponent::GetArrtibutes(AICharacter);
	if (AttributeComp->GetHealth()<=50.0f)
	{
		BlackboardComponent->SetValueAsBool(CheckHealthKey.SelectedKeyName, true);
	}
	else {
		BlackboardComponent->SetValueAsBool(CheckHealthKey.SelectedKeyName, false);

	}


}

SBTTask_HealSelf.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "BehaviorTree/BTTaskNode.h"
#include "SBTTask_HealSelf.generated.h"

/**
 * 
 */
UCLASS()
class ACTIONROGUELIKE_API USBTTask_HealSelf : public UBTTaskNode
{
	GENERATED_BODY()

	virtual EBTNodeResult::Type ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) override;


};

SBTTask_HealSelf.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "AI/SBTTask_HealSelf.h"
#include "AI/SAICharacter.h"
#include "AIModule/Classes/AIController.h"
#include "SAttributeComponent.h"

EBTNodeResult::Type USBTTask_HealSelf::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory)
{
	//获得Controller
	AAIController* MyController = OwnerComp.GetAIOwner();
	//获得Character
	ASAICharacter* MyPawn = Cast<ASAICharacter>(MyController->GetCharacter());
	if (ensure(MyPawn))
	{
		USAttributeComponent* MyAttributeComp = USAttributeComponent::GetArrtibutes(MyPawn);
		MyAttributeComp->ApplyHealthChange(MyPawn, MyAttributeComp->getHealthMax());
		return EBTNodeResult::Succeeded;
	}
	return EBTNodeResult::Failed;
}

行为树如图所示

请添加图片描述

EQS的设置看教程的来,我还没研究透,研究透了单独写一个EQS的文章,把里头的随机点如何得分详实地写出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/32716.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[LeetCode周赛复盘] 第 107 场双周赛20230624

[LeetCode周赛复盘] 第 107 场双周赛20230624 一、本周周赛总结6898. 字符串连接删减字母1. 题目描述2. 思路分析3. 代码实现 6895. 构造最长的新字符串1. 题目描述2. 思路分析3. 代码实现 6898. 字符串连接删减字母1. 题目描述2. 思路分析3. 代码实现 6468. 统计没有收到请求…

Consul 理解

Consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案&#xff0c;不再需要依赖其他工具&#xff08;比如ZooKeeper等&#xff09;。服务部署简单&#xff0c;只有一…

(转载)支持向量机(support vector machine, SVM)的分类(matlab实现)

支持向量机(support vector machine,SVM)是一种新的机器学习方法&#xff0c;其基础是Vapnik 创建的统计学习理论(statistical learning theory,STL)。统计学习理论采用结构风险最小化(structural risk minimization,SRM)准则&#xff0c;在最小化样本点误差的同时&#xff0c;…

HTML点击显示、点击隐藏details 标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><details> <summary>Copyright 1999-2011.</summary> <p> - by Refsnes Da…

Redis数据类型

Redis数据类型 一、String数据类型1、概述2、实验 二、List数据类型1、概述2、实验 三、Hash数据类型&#xff08;散列类型&#xff09;1、概述2、实验 四、Set数据类型&#xff08;无序集合&#xff09;1、概述2、应用范围3、实验 五、Sorted Set数据类型&#xff08;zset、有…

JAVA开发与运维(怎么通过docker部署微服务jar包)

目标&#xff1a; 通过docker的方式部署微服务。 一、背景&#xff1a; 我们通过java开发的微服务可以打成jar包&#xff0c;我们可以直接通过裸机部署&#xff0c;也可以通过docker来部署&#xff0c;本文介绍通过docker来部署微服务。 二、首先我们介绍一下docker的发展过程…

2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)

目录 一、前言 二、问题背景 三、问题 四、解题思路 &#xff08;1&#xff09;针对问题1&#xff1a; &#xff08;2&#xff09;针对问题2&#xff1a; &#xff08;3&#xff09;针对问题3&#xff1a; 五、附上几个典型代码 &#xff08;1&#xff09;K-means算法…

【HTTP 协议】掌握 Web 的核心技术

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 谈起 HTTP 协议&#xff08;超文本传输协议&#xff09;&#xff0c;不知道大家第一次是从什么地方了解到这个协议的呢&#xff1f;在真实的网络环境中网络协议的种类非常多&#xff0c;其中有一些耳熟能详的…

深入解析大型语言模型:从训练到部署大模型

简介 随着数据科学领域的深入发展&#xff0c;大型语言模型—这种能够处理和生成复杂自然语言的精密人工智能系统—逐渐引发了更大的关注。 LLMs是自然语言处理&#xff08;NLP&#xff09;中最令人瞩目的突破之一。这些模型有潜力彻底改变从客服到科学研究等各种行业&#x…

SpringSecurity实现Remember-Me实践

【1】基于会话技术的实现 也就是基于Cookie的实现&#xff0c;用户信息通过某种规则进行加密然后生成一个字符串设置为cookie。 ① 登录页面 这里name"remember-me"表示“记住我”的复选框&#xff0c;默认key是remember-me。 <form action"/user/login&…

EasyCVR电子地图鼠标悬停展示经纬度的技术实现

EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可…

VS2019 Python连接Sql server2008

安好后&#xff1a; 测试代码&#xff1a; import pymssqltry:conn pymssql.connect(host127.0.0.1,usersa,password123456,databasehotel,charsetutf8)# 连接并执行Sql语句cursor conn.cursor()sql select * from odercursor.execute(sql)# 获取数据集rs cursor.fetchal…

从操作系统角度了解内存管理

一.内存管理 1.主要功能 内存管理的主要功能有: 内存空间的分配与回收。由操作系统完成主存储器空间的分配和管理&#xff0c;使程序员摆脱存储分配的麻烦&#xff0c;提高编程效率。地址转换。在多道程序环境下&#xff0c;程序中的逻辑地址与内存中的物理地址不可能一致, …

React--Component组件浅析

目录 一 前言二 什么是React组件&#xff1f;三 二种不同 React 组件1 class类组件2 函数组件 四 组件通信方式五 组件的强化方式六 总结 一 前言 在 React 世界里&#xff0c;一切皆组件&#xff0c;我们写的 React 项目全部起源于组件。组件可以分为两类&#xff0c;一类是类…

Redis---集群

目录 一、集群的介绍 1.1 为什么需要集群呢&#xff1f; 1.2 什么是集群&#xff1f; 1.2 集群能干什么呢&#xff1f; 二、集群的算法之分片&槽位slot 2.1 什么是槽位slot&#xff1f; 2.2 分片 2.3 使用槽位和分片的优势 2.4 slot 槽位映射的三种算法 1、哈…

《深入浅出WPF》学习笔记

文章目录 相关资源前言WPF 学习笔记环境配置WPF基础&#xff1a;一个WPF程序是如何启动的xmal文件和cs文件是如何连接的如何确定启动页面xmal文件如何引用别的文件如何引用 WPF是如何创建元素&#xff0c;改变元素的WPF的元素创建和简单属性赋值WPF的树形界面Xmal属性赋值为什么…

内网安全:代理技术详解

目录 代理技术实验所用网络拓扑图及说明 代理技术 SOCK协议 使用代理技术的原因 正向代理与反向代理 实战一&#xff1a;MSF代理通讯 实验原理说明 一. Meterpreter建立路由 二. MSF建立节点 三. 建立代理到MSF上 实战二&#xff1a;CS代理通讯 实验原理说明 一. …

【MYSQL篇】Update语句原理详解

文章目录 前言缓冲池Buffer PoolInnoDB 内存结构redo logundo logBinlog 总结 前言 前面的文章我们已经对MySQL的查询语句的执行流程进行了说明&#xff0c;感兴趣的可以去看看&#xff1a; 【MySQL篇】Select语句原理详解 本篇文章我们来聊聊 MySQL更新语句的执行原理。更新…

从0到1精通自动化测试,pytest自动化测试框架,doctest测试框架(十四)

一、前言 doctest从字面意思上看&#xff0c;那就是文档测试。doctest是python里面自带的一个模块&#xff0c;它实际上是单元测试的一种。 官方解释&#xff1a;doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段&#xff0c;然后尝试执行并验证结果 doctest测试…

spring mvc架构模式概述

三层架构: pojo&#xff0c;bean&#xff0c;domain是一个意思&#xff0c;表示实体类 dao表示操作数据库的那个类&#xff0c;一般是一张表一个