113. UE5 GAS RPG 实现传送点切换地图

news/2024/12/4 23:49:22/

接着我们优化体验相关,首先实现检查点可以在选中点击后,可以自动移动到目标检查点。然后增加一个可以提示玩家已经探索过相关区域的光柱,最后增加一个传送点,可以通过传送点传送到其它关卡。

实现点击自动移动到检查点

先实现点击移动到检查点功能。
我们先将实现接口冲蓝图移动到c++里,之前可以当做演示,如何实现在一个物体上添加接口。
我们在高亮接口里添加一个新好用,用于获取角色需要移动到的检查点的位置。
在这里插入图片描述
在检测点类里增加一个场景组件,用于定义位置
在这里插入图片描述
增加一个可以修改自定义深度的配置
在这里插入图片描述
在构造函数里初始化
在这里插入图片描述
实现接口的三个函数
在这里插入图片描述
敌人也继承了高亮接口,但是不需要修改目标位置
在这里插入图片描述
然后在PlayerController里,鼠标抬起事件里,通过接口修改目标位置,然后通过插件计算移动路径。
在这里插入图片描述
然后打开检查点,将蓝图实现的接口内容去掉
在这里插入图片描述
修改场景组件到一个合适的位置。测试即可。
在这里插入图片描述

实现提示玩家探索过区域的灯柱

如果地形复杂,我们还需要设置一个灯柱,玩家激活以后,就会一直常亮,提醒玩家此地已经探索过。
我们在检测点类里添加一个属性,因为灯柱无法保存存档,所以,它的碰撞体是无法绑定存储回调的
在这里插入图片描述
然后事件开始,绑定回调时,通过变量判断是否需要绑定
在这里插入图片描述
接着通过类创建一个新的蓝图
在这里插入图片描述
在蓝图里设置对应的模型
在这里插入图片描述
将绑定变量设置为false,这样就无法绑定回调,我们还能定义显示颜色。
在这里插入图片描述
然后修改Sphere的碰撞体大小,在什么范围内和玩家角色碰撞会亮起。
在这里插入图片描述
在蓝图里绑定Sphere碰撞体的重叠事件
在这里插入图片描述
Handle Glow Effects会创建一个新的材质返回,我们在函数接收,并通过时间轴更新数值,让其慢慢亮起来。
在这里插入图片描述
测试效果
在这里插入图片描述

实现关卡切换

接下来,我们增加一个新的类,继承检查点类,用于实现两张地图的切换功能。
在这里插入图片描述
在类里,我们要去掉一部分检查点的功能,实现一部分新的功能。
我们首先申明了构造函数,explicit 关键字的主要作用是防止隐式转换和意外初始化。尤其是还需要调用父类的构造函数时。
在这里插入图片描述
在构造函数里,我们只做了一件事,就是将球的碰撞体附加到了移动目标组件上。
在这里插入图片描述
然后覆写父类的LoadActor函数,传送点不需要激活高亮效果,我们覆写它,不让它执行高亮函数
在这里插入图片描述
在这里插入图片描述
然后,我们增加了两个属性,一个是需要传送到的目标地图,另一个是目标地图的初始点标签。
在这里插入图片描述
最后,我们覆写球的重合事件,它和检查点的功能不同,我们将设置高亮的逻辑去掉,将角色信息和场景信息保存。最后还需要切换关卡
在这里插入图片描述
上图,我们保存场景状态时,还传入了关卡的资源路径名称,这个后面会讲到。
在存档类里,我们增加了一个新的存储名称,用于存储地图资源名称,其主要目的是为了获取设置显示的对应关卡的名称。
在这里插入图片描述
地图和名称对应的数据我们是设置在GameMode类里的,保存场景状态函数也是在GameMode类里,我们在类里增加一个新的函数,用于通过地图资源名称获取地图显示名称。
在这里插入图片描述
实现这里,通过遍历所有的设置的地图,找到对应的关卡,将显示名称返回。
在这里插入图片描述
并在保存状态函数增加一个新的参数传入
在这里插入图片描述
保存存档时,通过关卡资源名称获取到显示名称,保存到存档里,方便下次加载使用
在这里插入图片描述
接着就是保存关卡出生点的位置标签,我们是在角色保存时将新的标签保存。
我们要增加逻辑,在保存时,也需要将游戏实例上缓存的标签修改掉,这样,在未保存之前,角色也会出现在当前场景的目标位置的出生点。
在这里插入图片描述
修改完成,我们编译打开引擎,增加一个新的关卡,用于切换。
在这里插入图片描述
并将新关卡添加到GameMode蓝图里。
在这里插入图片描述
通过传送点类创建一个新的蓝图,用于切换。
在这里插入图片描述
添加模型,并修改传送位置和碰撞体大小
在这里插入图片描述
将其添加到场景里
在这里插入图片描述
并设置目标关卡和目标关卡的出生点
在这里插入图片描述
当然,自身的标签还是有用的,我们可以通过设置玩家出生点标签,在切换此关卡时,让玩家生成在传送点的PlayerStart位置。
在这里插入图片描述


http://www.ppmy.cn/news/1552413.html

相关文章

milvus 通俗易懂原理

向量值如何生成的 Milvus 是一个开源的向量数据库,专门用于处理高维向量的存储、搜索和分析。向量值本身通常来自于某些机器学习或深度学习模型的输出,尤其是在自然语言处理(NLP)、计算机视觉(CV)、推荐系…

数据结构有哪些?

常见的数据结构包括:数组、链表、栈、队列、树、堆、散列表(哈希表)等。‌ ‌数组‌:按照索引查询元素的速度很快,但大小固定,添加和删除元素需要移动其他元素,且只能存储一种类型的数据。‌链…

Spring Cloud Alibaba(六)

目录: 分布式链路追踪-SkyWalking为什么需要链路追踪什么是SkyWalkingSkyWalking核心概念什么是探针Java AgentJava探针日志监控实现之环境搭建Java探针日志监控实现之探针实现编写探针类TestAgent搭建 ElasticsearchSkyWalking服务环境搭建搭建微服务微服务接入Sky…

SVM支持向量机分类——基于Python实现

SVM支持向量机分类 1.描述统计 from numpy import * from scipy import * from pandas import * import matplotlib.pyplot as pltimport seaborn as sns glassread_csv(../data/第5章数据/Glass.csv,sep,) glass.head() glass[Type].value_counts()Type 2 76 1 70 7 …

流量特征分析

菜刀: PHP: 请求头中:ua头为百度,火狐 请求体中传递的payload为base64编码,有assert、eval、base64等特征字符 ,并且存在固定的字符串QGluaV9同时z0是菜刀默认的连接参数。 JSP: 主要在iA…

Spark常问面试题---项目总结

一、数据清洗,你都清洗什么?或者说 ETL 你是怎么做的? 我在这个项目主要清洗的式日志数据,日志数据传过来的json格式 去除掉无用的字段,过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据&#xff…

DevOps工程技术价值流:GitLab源码管理与提交流水线实践

在当今快速迭代的软件开发环境中,DevOps(开发运维一体化)已经成为提升软件交付效率和质量的关键。而GitLab,作为一个全面的开源DevOps平台,不仅提供了强大的版本控制功能,还集成了持续集成/持续交付(CI/CD)…

C_字符串的一些函数

1.字符串输入函数 scanf("%s",数组名)&#xff1b; gets(数组名)&#xff1b; 区别&#xff1a; scanf(“%s”,数组名); 把空格识别为输入结束 #include <stdio.h>int main() {char a[10];printf("输入&#xff1a;");scanf("%s",a)…