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

斯坦福UE4 C++课学习补充25:AI感知组件

文章目录

  • 一、引入感知组件并绑定委托
  • 二、优化角色旋转

一、引入感知组件并绑定委托

  1. PawnSensingComponent是UE中用于感知其他 Pawn(或 Actor)存在的一个组件,常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力,允许它们在游戏中做出智能反应,如检测玩家位置、追踪目标等。
  • 功能:视觉感知、听觉感知、视锥角度
  • 主要属性
    SightRadius(视觉半径):控制 Pawn 能看到的最大距离。
    SensingInterval(感知间隔):设置每次感知的时间间隔,减少感知的频率来优化性能。
    HearingThreshold(听觉阈值):AI 需要检测的最低噪音水平。
    PeripheralVisionAngle:定义视觉的视野角度。
//SAICharacter.h
void SetTargetActor(AActor* NewTarget);
UPROPERTY(VisibleAnywhere, Category = "Components")
UPawnSensingComponent* PawnSensingComp;UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
USAttributeComponent* AttributeComp;UFUNCTION()
void OnPawnSeen(APawn* Pawn);
//SAICharacter.cpp
PawnSensingComp = CreateDefaultSubobject<UPawnSensingComponent>("PawnSensingComp");void ASAICharacter::OnPawnSeen(APawn* Pawn)
{SetTargetActor(Pawn);//DrawDebugString(GetWorld(), GetActorLocation(), "PLAYER SPOTTED", nullptr, FColor::White, 4.0f, true);}
void ASAICharacter::SetTargetActor(AActor* NewTarget)
{AAIController* AIC = Cast<AAIController>(GetController());if (AIC){AIC->GetBlackboardComponent()->SetValueAsObject("TargetActor", NewTarget);}
}
  1. 委托绑定初始化
void ASAICharacter::PostInitializeComponents()
{Super::PostInitializeComponents();PawnSensingComp->OnSeePawn.AddDynamic(this, &ASAICharacter::OnPawnSeen);AttributeComp->OnHealthChanged.AddDynamic(this, &ASAICharacter::OnHealthChanged);
}

二、优化角色旋转

  1. 在观察AI角色移动时,我们注意到AI角色在转向时是一下就转到就看到的角色方向,非常突兀。为了优化,可以在MovementComponent组件里勾选使用控制器所需的旋转。该选项将使角色按照旋转速率平滑地旋转到目标角度。
  • 想使上述选项生效,还需取消勾选自身细节面板里的使用控制器旋转Yaw,这样AI控制器不再强制设置角色当前的Yaw,实现Movement组件完全控制角色的旋转。*

相关文章:

斯坦福UE4 C++课学习补充25:AI感知组件

文章目录 一、引入感知组件并绑定委托二、优化角色旋转 一、引入感知组件并绑定委托 PawnSensingComponent是UE中用于感知其他 Pawn&#xff08;或 Actor&#xff09;存在的一个组件&#xff0c;常用于 AI 角色的视觉、听觉等感知功能。它为 AI 提供了基础的感知能力&#xff…...

大模型 memory 记忆 缓存的应用

在探讨大模型的“memory”&#xff08;记忆&#xff09;功能时&#xff0c;我们通常会涉及缓存、存储以及如何有效管理和利用这些记忆来增强模型的性能。以下是对大模型memory记忆、缓存及相关概念的详细分析&#xff1a; 一、大模型的记忆功能 大模型&#xff0c;特别是大型…...

perl 给特定文件加上特定内容

perl 给特定文件加上特定内容 给所有的输入文件&#xff0c;加上特定的内容 本例中&#xff0c;给所有的输入文件内加入## Copyright xxx 如果检测到已经有## Copyright字样的行&#xff0c;那么不添加&#xff0c;具体代码如下。 可以使用该脚本&#xff0c;给所有的verilog文…...

全面解析网络性能监控系统与网络故障排除技巧,助力IT运维高效管理

目录 一、什么是网络性能监控系统&#xff1f; 1.1 网络性能监控系统的定义与作用 二、网络性能监控的关键指标 三、网络故障排除的重要性 3.1 为什么网络故障排除至关重要&#xff1f; 3.2 网络故障的常见类型 四、如何高效进行网络故障排除&#xff1f; 4.1 系统化的…...

Centos7 搭建单机elasticsearch

以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改&#xff09; 一、装 Java 环境 Elasticsearch 是用 Java 编写的&#xff0c;所以需要先安装 Java 运行环境。 检查系统中是…...

【前端】Bootstrap:JavaScript 组件与插件

Bootstrap 不仅提供了强大的 CSS 工具和组件&#xff0c;还内置了丰富的 JavaScript 组件和插件。这些 JavaScript 组件能够增强网页的交互性&#xff0c;让开发者在不编写大量 JavaScript 代码的情况下快速实现各种动态效果。Bootstrap 的 JavaScript 组件基于 jQuery&#xf…...

部署 Open WebUI

1. 安装docker 2.启动Hyper-v 3.下载 安装 WSL wsl --update wsl --install 4. 打开 DeskDocker 5. 打开 运行 ollama 参考 Windows 部署 ollama-CSDN博客 6. 部署 运行 open webui docker docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gateway -v o…...

HUAWEI_HCIA_实验指南_Lib2.1_交换机基础配置

1、原理概述 交换机之间通过以太网电接口对接时需要协商一些接口参数&#xff0c;比如速率、双工模式等。交换机的全双工是指交换机在发送数据的同时也能够接收数据&#xff0c;两者同时进行。就如平时打电话一样&#xff0c;说话的同时也能够听到对方的声音。而半双工指在同一…...

第4天:用户界面和布局补充材料——`activity_login.xml`解读

下面是对“第4天&#xff1a;用户界面和布局补充材料”该文学习的更深层次的补充材料&#xff0c;对 activity_login.xml 文件的理解。 下面对activity_login.xml’ 文件中每一行进行详细解释&#xff1a; <?xml version"1.0" encoding"utf-8"?>声…...

《深入浅出LLM基础篇》(五):Propmt工程优化

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…...

基于WebSocket实现简易即时通讯功能

代码实现 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifa…...

2012年国赛高教杯数学建模D题机器人避障问题解题全过程文档及程序

2012年国赛高教杯数学建模 D题 机器人避障问题 图1是一个800800的平面场景图&#xff0c;在原点O(0, 0)点处有一个机器人&#xff0c;它只能在该平面场景范围内活动。图中有12个不同形状的区域是机器人不能与之发生碰撞的障碍物&#xff0c;障碍物的数学描述如下表&#xff1a…...

Linux驱动开发——设备树

文章目录 1 什么是设备树&#xff1f;2 DTS、DTB和DTC3 DTS语法3.1 dtsi头文件3.2 设备节点3.3 标准属性3.4 根节点compatible属性3.5 向节点追加或修改内容 4 创建小型模板设备树5 设备树在系统中的体现6 绑定信息文档7 设备树常用OF操作函数7.1 查找节点的OF函数7.2 查找父/子…...

spring boot 2.7整合Elasticsearch Java client + ingest attachment实现文档解析

一、软件环境 软件版本号备注Spring boot2.7.23.x版本建议使用ElasticSearch8.xElasticSearch7.17.4ElasticSearch 7.x 可使用JDK 8 ElasticSearch 8.x 要求使用JDK 11 二、安装ElasticSearch 下载地址&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/el…...

一、PyCharm 基本快捷键总结

PyCharm 快捷键 前言一、编辑&#xff08;Editing&#xff09;二、查找/替换(Replace)三、运行(Running)四、重构(Refactoring)五、基本(General) 前言 下面我们将学习一些 Pycharm 中的快捷键来帮我们更好的使用工具。 一、编辑&#xff08;Editing&#xff09; 快捷键快捷键…...

Windows系统C盘爆满了,如何清理?

Windows系统C盘爆满了&#xff0c;如何清理&#xff1f; 大家好&#xff0c;我是秋意零。 相信使用过Windows系统的朋友&#xff0c;都见过C盘那道靓丽的 “红色风景线” &#xff01; 我自己的Win10系统&#xff0c;已经使用了4-5年时间了。最近频频出现"红色风景线&q…...

【C++】踏上C++学习之旅(一):初识C++和命名空间

文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间&#xff1f;2.2 命名空间的语法2.3 命名空间的原理2.4 使用命名空间的三种方式2.4.1 加命名空间名称及作用域限定符( :: )2.4.2 使用using关键字将命名空间中某个成员 引入2.4.3 使用using namespace 命…...

tensorflow入门案例手写数字识别人工智能界的helloworld项目落地1

参考 https://tensorflow.google.cn/?hlzh-cn https://tensorflow.google.cn/tutorials/keras/classification?hlzh-cn 项目资源 https://download.csdn.net/download/AnalogElectronic/89872174 文章目录 一、案例学习1、导入测试和训练数据集&#xff0c;定义模型&#xff…...

深度学习——线性神经网络(三、线性回归的简洁实现)

目录 3.1 生成数据集3.2 读取数据集3.3 定义模型3.4 初始化模型参数3.5 定义损失函数3.6 定义优化算法3.7 训练 在上一节中&#xff0c;我们通过张量来自定义式地进行数据存储和线性代数运算&#xff0c;并通过自动微分来计算梯度。实际上&#xff0c;由于数据迭代器、损失函数…...

本地部署 Milvus

本地部署 Milvus 1. Install Milvus in Docker2. Install Attu, an open-source GUI tool 1. Install Milvus in Docker curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standalone_embed.sh …...

简单三步:用Qwen3语义雷达,为你的网站添加智能搜索功能

简单三步&#xff1a;用Qwen3语义雷达&#xff0c;为你的网站添加智能搜索功能 1. 为什么需要语义搜索&#xff1f; 传统的网站搜索功能大多基于关键词匹配&#xff0c;这种技术存在明显局限。当用户搜索"如何解决电脑卡顿"时&#xff0c;如果知识库中只有"提…...

如何高效解决Cursor试用限制?完整实用的解决方案指南

如何高效解决Cursor试用限制&#xff1f;完整实用的解决方案指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We h…...

保姆级教程:用VMware和Kali复现Vulnstack红日靶场2的完整渗透流程(附CS联动技巧)

红队实战进阶&#xff1a;Kali与Cobalt Strike协同渗透Vulnstack靶场全解析 环境配置与网络拓扑设计 在开始渗透测试之前&#xff0c;正确的环境搭建是成功的基础。不同于简单的虚拟机启动&#xff0c;专业级红队演练需要精确模拟企业内网环境。我们采用三台靶机&#xff08;WE…...

哔哩下载姬(downkyi)全功能指南:从入门到精通的视频下载解决方案

哔哩下载姬(downkyi)全功能指南&#xff1a;从入门到精通的视频下载解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水…...

用STM32F103和TMC2209给步进电机加个‘防丢步’外挂:手把手实现位置式PID闭环

用STM32F103和TMC2209给步进电机加个‘防丢步’外挂&#xff1a;手把手实现位置式PID闭环 步进电机在3D打印机、CNC机床和自动化设备中无处不在&#xff0c;但许多开发者都遇到过这样的尴尬&#xff1a;明明发送了1000个脉冲&#xff0c;电机却只转了980步。这种"丢步&quo…...

RexUniNLU镜像免配置:预置中文分词增强模块,提升未登录词与新词识别率

RexUniNLU镜像免配置&#xff1a;预置中文分词增强模块&#xff0c;提升未登录词与新词识别率 1. 什么是RexUniNLU&#xff1f; RexUniNLU是一款基于Siamese-UIE架构的轻量级自然语言理解框架。它最大的特点是零样本学习能力——你不需要准备任何标注数据&#xff0c;只需要定…...

北斗网格位置码实战:从编码原理到Java实现(非极地)

1. 北斗网格位置码&#xff1a;为什么我们需要它&#xff1f; 当你打开手机地图查看自己的位置时&#xff0c;看到的通常是经纬度坐标。这种表示方式虽然精确&#xff0c;但在实际应用中却存在不少问题。比如在物流配送系统中&#xff0c;直接存储和查询经纬度数据效率很低&am…...

别再手动敲命令了!用Docker Compose一键部署Nacos 2.4.2,附MySQL持久化配置

告别繁琐命令&#xff1a;Docker Compose全栈部署Nacos 2.4.2与MySQL的最佳实践 在微服务架构的浪潮中&#xff0c;服务发现与配置管理已成为现代应用不可或缺的基础设施。Nacos作为阿里巴巴开源的服务注册与配置中心&#xff0c;凭借其轻量级、高可用的特性&#xff0c;正逐步…...

3个关键步骤让老款Mac重获新生:OpenCore Legacy Patcher终极指南

3个关键步骤让老款Mac重获新生&#xff1a;OpenCore Legacy Patcher终极指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当苹果宣布你的Mac不再支持最新的macOS系统时…...

Codesys实战排障手记:从证书过期到RTC时钟校准

1. 当Codesys突然弹出证书过期警告时 那天我正在客户现场调试禾川HCQ1系列PLC&#xff0c;刚打开Codesys V3.5开发环境&#xff0c;一个鲜红的证书过期警告就弹了出来。这种突如其来的报错让现场气氛瞬间紧张——产线等着调试&#xff0c;设备等着联调&#xff0c;而系统却在关…...