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

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

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

先实现点击移动到检查点功能。

我们先将实现接口冲蓝图移动到c++里,之前可以当做演示,如何实现在一个物体上添加接口。

我们在高亮接口里添加一个新好用,用于获取角色需要移动到的检查点的位置。

在检测点类里增加一个场景组件,用于定义位置

增加一个可以修改自定义深度的配置

在构造函数里初始化

实现接口的三个函数

敌人也继承了高亮接口,但是不需要修改目标位置

然后在PlayerController里,鼠标抬起事件里,通过接口修改目标位置,然后通过插件计算移动路径。

然后打开检查点,将蓝图实现的接口内容去掉

修改场景组件到一个合适的位置。测试即可。

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

如果地形复杂,我们还需要设置一个灯柱,玩家激活以后,就会一直常亮,提醒玩家此地已经探索过。

我们在检测点类里添加一个属性,因为灯柱无法保存存档,所以,它的碰撞体是无法绑定存储回调的

然后事件开始,绑定回调时,通过变量判断是否需要绑定

接着通过类创建一个新的蓝图

在蓝图里设置对应的模型

将绑定变量设置为false,这样就无法绑定回调,我们还能定义显示颜色。

然后修改Sphere的碰撞体大小,在什么范围内和玩家角色碰撞会亮起。

在蓝图里绑定Sphere碰撞体的重叠事件

Handle Glow Effects会创建一个新的材质返回,我们在函数接收,并通过时间轴更新数值,让其慢慢亮起来。

测试效果

实现关卡切换

接下来,我们增加一个新的类,继承检查点类,用于实现两张地图的切换功能。

在类里,我们要去掉一部分检查点的功能,实现一部分新的功能。

我们首先申明了构造函数,explicit 关键字的主要作用是防止隐式转换和意外初始化。尤其是还需要调用父类的构造函数时。

在构造函数里,我们只做了一件事,就是将球的碰撞体附加到了移动目标组件上。

然后覆写父类的LoadActor函数,传送点不需要激活高亮效果,我们覆写它,不让它执行高亮函数

然后,我们增加了两个属性,一个是需要传送到的目标地图,另一个是目标地图的初始点标签。

最后,我们覆写球的重合事件,它和检查点的功能不同,我们将设置高亮的逻辑去掉,将角色信息和场景信息保存。最后还需要切换关卡

上图,我们保存场景状态时,还传入了关卡的资源路径名称,这个后面会讲到。

在存档类里,我们增加了一个新的存储名称,用于存储地图资源名称,其主要目的是为了获取设置显示的对应关卡的名称。

地图和名称对应的数据我们是设置在GameMode类里的,保存场景状态函数也是在GameMode类里,我们在类里增加一个新的函数,用于通过地图资源名称获取地图显示名称。

实现这里,通过遍历所有的设置的地图,找到对应的关卡,将显示名称返回。

并在保存状态函数增加一个新的参数传入

保存存档时,通过关卡资源名称获取到显示名称,保存到存档里,方便下次加载使用

接着就是保存关卡出生点的位置标签,我们是在角色保存时将新的标签保存。

我们要增加逻辑,在保存时,也需要将游戏实例上缓存的标签修改掉,这样,在未保存之前,角色也会出现在当前场景的目标位置的出生点。

修改完成,我们编译打开引擎,增加一个新的关卡,用于切换。

并将新关卡添加到GameMode蓝图里。

通过传送点类创建一个新的蓝图,用于切换。

添加模型,并修改传送位置和碰撞体大小

将其添加到场景里

并设置目标关卡和目标关卡的出生点

当然,自身的标签还是有用的,我们可以通过设置玩家出生点标签,在切换此关卡时,让玩家生成在传送点的PlayerStart位置。

相关推荐
ue星空3 天前
UE5配置MRQ编解码器输出MP4视频
ue5·音视频
吴梓穆8 天前
UE5 图片9宫格切割
ue5
Kingsdesigner10 天前
游戏开发流程革命:我用Substance插件,在UE5内实现材质的实时“创世纪”
游戏·adobe·ue5·游戏引擎·游戏开发·设计师·substance 3d
幻雨様12 天前
UE5多人MOBA+GAS 37、库存系统(四)
ue5
DoomGT12 天前
Physics Simulation - UE中Projectile相关事项
ue5·游戏引擎·虚幻·虚幻引擎·unreal engine
右弦GISer14 天前
【UE5医学影像可视化】读取本地Dicom生成VolumeTexture,实现2D显示和自动翻页
ue5·dicom·医学图像
小梦白14 天前
RPG增容3:尝试使用MVC结构搭建玩家升级UI(一)
游戏·ui·ue5·mvc
AgilityBaby14 天前
解决「CPU Virtualization Technology 未开启或被占用」弹窗问题
ue5·游戏引擎·无畏契约·cpu 虚拟化技术
幻雨様16 天前
UE5多人MOBA+GAS 番外篇:同时造成多种类型伤害
ue5
幻雨様16 天前
UE5多人MOBA+GAS 番外篇:同时造成多种类型伤害,以各种属性值的百分比来应用伤害(版本二)
java·前端·ue5