【UE4 塔防游戏系列】04-敌人沿着指定路线移动

news2024/11/20 18:26:16

目录

效果

步骤

一、绘制道路

二、创建出生点和路径点 

三、生成敌人

四、敌人沿着路径点移动


效果 

步骤

一、绘制道路

首先绘制一条道路,后面希望敌人会沿着这条绘制道路行走。

二、创建出生点和路径点 

2.1 新建父类为Actor的蓝图,作为敌人出生点,命名为“BP_EnemyBirthPlace”

 将其放置在视口中玩家出生的位置

2.2 再创建一个父类为Actor的蓝图,作为敌人在道路上移动的路径点,命名为“BP_EnemyPathPoint”

 在视口中将“BP_EnemyPathPoint”放置在每一个道路的拐点处

2.3 有了路径点之后,我们就需要让每一个路径点知道它的下一个路径点是谁

打开“BP_EnemyPathPoint”,添加一个变量“NextPathPointActor”

 变量类型为其自身(“BP_EnemyPathPoint”)的对象引用

 勾选可编辑实例和生成时公开

2.4 在大纲中选中场景中的第一个路径点,然后去设置NextPathPointActor,即选择下一个路径点是哪个Actor

 这里设置第一个路径点的下一个路径点是“BP_EnemyPathPoint2”,然后以此类推,设置每一个路径点的下一个路径点的是哪一个Actor。

2.5 我们也要告诉出生点那个Actor,敌人从它那里生成后走的下一个路径点是哪个Actor,方法和之前同理。打开“BP_EnemyBirthPlace”,新建一个变量命名为“FirstPathPointActor”

变量类型也是“BP_EnemyPathPoint”的对象引用。

 

 然后在视口中选中出生点,设置“FirstPathPointActor”为第一个路径点的那个Actor

三、生成敌人

打开“TaFangGameMode”

首先在事件图表中获取到敌人出生点的那个Actor

 将获取到的actor作为变量,变量命名为“EnemyBirthPlaceActor”

生成具有AIController的Enemy1

新建一个整型变量“NumOfSpawnEnemy1”,用于记录当前已经生成Enemy1的数量

然后每生成一次就将变量“NumOfSpawnEnemy1”加1

 判断敌人生成的数量是否>20,如果没有到达20个就继续生成敌人。

 可以看到此时已经能够在出生点生成敌人

四、敌人沿着路径点移动

4.1 打开“TotalEnemyCategory”(所有敌人的父类)

 新建一个变量命名为“BirthPlace”

 变量类型为“BP_EnemyBirthPlace”的对象引用

4.2 打开“TaFangGameMode”,添加如下节点。将获取到的出生点的Actor传递给敌人总类中的变量“BirthPlace”

4.3 回到蓝图“TotalEnemyCategory”

此时变量“BirthPlace”已经被赋予了具体的对象(即“BP_EnemyBirthPlace”)

那么我们就可以获得其中的“FirstPathPointActor”

 然后就可以让敌人移动到“FirstPathPointActor”所处的位置

那么如何让敌人不断的移动到下一个路径点的位置呢?我们可以新建一个变量,命名为“NextPathPoint”

变量类型为“BP_EnemyPathPoint”的对象引用

当我们获取到第一个路径点Actor的时候我们就可以将其设置为“NextPathPoint”

 当敌人移动完成后,我们又可以获取到“BP_EnemyPathPoint”中的变量“NextPathPointActor”,并把该变量赋予“NextPathPoint”

 将变量“NextPathPoint”转换为有效的Get,以此来判断是否能够有效的获取到下一个路径点Actor

 如果能有效获取,就不断获取下一个路径点Actor,然后让敌人走到这个Actor所处的位置

 4.4 为了让敌人动起来,我们还需向视口中增加“导航网格体边界体积”,从而让AI知道哪些地方可以走

 扩大“导航网格体边界体积”覆盖区域

 按P键显示AI可以被导航的真实区域

 

 此时如果直接运行游戏的话,可以看到报如下错误

 这因为在“TaFangGameMode”中,还没来得及将获取到“EnemyBirthPlaceActor”传递给蓝图“TotalEnemyCategory”

 我们只需在“TotalEnemyCategory”中加一段延迟即可。

 运行效果如文章开头所示。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker——认识Docker 常用命令 Linux中安装docker 常见问题及其解决

目录 引出Docker是啥?Docker是啥?Docker VS 虚拟机1.特性优势2.资源优势 Docker的架构Docker常用命令(1)docker ps(2)docker stop 容器名称(3)docker ps -a(4&#xff0…

css基础知识二十:说说对Css预编语言的理解?有哪些区别?

一、是什么 Css 作为一门标记性语言,语法相对简单,对使用者的要求较低,但同时也带来一些问题 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往…

[java安全]CommonsCollections3.1

文章目录 【java安全】CommonsCollections3.1InvokerTransformerConstantTransformerChainedTransformerTransformedMap如何触发checkSetValue()方法?AnnotationInvocationHandlerpoc利用链 【java安全】CommonsCollections3.1 java开发过程中经常会用到一些库。Ap…

【Python 基础篇】Python环境搭建

文章目录 一、Python环境的下载二、Python环境变量的安装及配置三、Python编译器的选择一、Python环境的下载 Python官方网站:www.python.org 这个是Python的官方网站,Python下载以及相关文档都能在里面找到 如果下载慢的话,可以在各大电脑应用市场下载(自己是在联想应用商…

【分布式任务调度】XXL-JOB调度中心集群部署配置(一)

文章目录 1.概述2.代码编译2.1.代码下载2.2.初始化与编译 3.集群部署3.1.服务启动3.2.反向代理 4.结语 1.概述 XXL-JOB是一款轻量级的分布式任务调度中间件,默认支持6000个定时任务,如果生产环境的任务数量在这个范围内,可以选择使用 XXL-JO…

【手撕C语言基础】联合体与枚举

(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…

九五从零开始的运维之路(其二十)

[TOC](文章目录) 文章目录 前言一、LAMP是什么二、配置环境及安装1.配置yum源2.关闭防火墙、网络图形化工具及SElinux3.安装软件包 三、配置apache服务器内容四、启动服务五、访问验证总结 前言 本篇将简述的内容:Linux系统下的LAMP平台部署 基于discuz框架的论坛搭…

StartAllBack| Win11 更新系统后闪屏

解决方法:安装最新版 StartAllBack 中文官网:http://www.startallback.cn 激活方式: ① 点击下载好的 .exe 文件安装 StartAllBack ② 打开 StartAllBack 的安装目录 为我安装的路径:C:\Users\你的用户名\AppData\Local\Start…

opencv 基础学习08-图像通道操作

opencv 基础学习08-图像通道操作 什么是图像通道?通道操作:**1 通过索引拆分**2 通过opencv 函数拆分通道合并 什么是图像通道? OpenCV的通道拆分功能可用于将多通道图像拆分成单独的通道,这在图像处理和计算机视觉任务中具有许多…

[MySQL]MySQL内外连接

[MySQL]MySQL内外连接 文章目录 [MySQL]MySQL内外连接1. 内连接2. 外连接2.1 左外连接2.2 右外连接 3. 简单练习 1. 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,也是在开发过程中使用的最多的连接查询。 语法: SELECT ... FR…

【USRP X310】如何将你的X310转化为USRP RIO 可以用于FPGA编程

X310 转化为USRP RIO X310产品X310和NI-USRP对应关系 简介第一步原理解释打开工具运行 Initialize Flash.vi可以去选择设备类型Hardware Current Version 如何选择 第二步创建工程运行校准程序 附录:射频子板的IDWBXSBXCBXUBXTwinRX X310产品 X310和NI-USRP对应关系…

【Android知识笔记】应用进程(一)

应用进程的启动流程 冷启动与热启动 冷启动与热启动相比:冷启动除了要启动目标进程的入口Activity外,还需要通过AMS向Zygote申请启动目标应用进程,而热启动由于目标进程已经启动,只需直接打开目标进程的入口Activity即可。 AMS冷启动大概流程: 应用进程是在什么时机被启…

网络数据安全风险评估实施指引(二)

评估手段是多种多样的。信息安全风险评估可以用各种不同的方式识别资产脆弱性和攻击路径,数据安全风险评估也包含但不限于以下措施: 人员访谈:对相关人员进行访谈,核查制度规章、防护措施、安全责任落实情况; 文档查…

HTTP、HTTPS协议详解

文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后,浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法:get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…

C#使用Chart进行统计,切换不同的图表类型

WindowsForm应用程序中Chart图表控件所属的命名空间: Chart 命名空间: System.Windows.Forms.DataVisualization.Charting 对应的dll路径: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Syst…

链表的头指针、头节点和首元节点

链表的头指针、头节点和首元节点 头节点(哑结点) 有时,在链表的第一个节点之前会额外增设一个节点,该节点的数据域一般不存放数据(有些情况下也可以存放链表的长度等信息),此节点被称为头节点。 若链表中存在头节点&…

[每周一更]-(第54期):Go的多版本管理工具

参考 https://zhuanlan.zhihu.com/p/611253641https://learnku.com/articles/78326 前文概要 Go语言从开始使用从1.13起步,随着泛型的支持,带领团队在转型Go的时候,做基础组件架构选型使用1.18,但是Go版本不断迭代想使用最新版本…

Java的日期时间API

目录 JDK8之前的日期时间API java.lang.System类 java.util.Date类 java.text.SimpleDateFormat类 java.util.Calendar(日历)类 java.util.GregorianCalendar类 JDK8中新日期时间API LocalDate、LocalTime、LocalDateTime 类 Instant类 java.time.format.DateTimeFor…

SCA Sentinel分布式系统的流量防卫兵

Sentinel官网:https://sentinelguard.io/zh-cn Sentinel:Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户 保障微服务的稳定性 Sentinel与Hystrix对…

http连接处理(下)(四)

1.结合代码分析请求报文响应 下面我们将介绍服务器如何响应请求报文,并将该报文发送给浏览器端。首先介绍一些基础API,然后结合流程图和代码对服务器响应请求报文进行详解。 基础API部分,介绍stat、mmap、iovec、writev。 流程图部分&…