RPG游戏开发日志11:小地图实现

写在前面

本项目同步上传于coding上,国内读者可以通过在coding下载项目。
也欢迎你加入我的UE4学习交流QQ群:872537977。如果你喜欢我写的文章,也希望你点赞、收藏、转发。谢谢!
如果你喜欢我写的文章,也希望你点赞、收藏、转发。谢谢!
如果你想参与到这个项目的开发中来,唯一的要求是像我一样编写开发日志让更多的人看到并学习。
coding地址:https://git.dev.tencent.com/JeremyBrett/uRPG.git
在折腾了一段时间新角色之后,我们终于迎来了开发日志的更新。这一期我想讲一下关于MiniMap的制作,虽然我还不是很确定最后是否会使用小地图的形式,还是采用罗盘的方式。不过用蓝图的好处就是可以快速的实验各种玩法原型。

最终效果

需求分析

聪明的小伙伴应该已经想到了,制作小地图的原理,和制作3D的UI是一样的。
我们只需要将摄像机放在角色的正上方,然后时刻捕捉角色周围的投影就可以了。

制作过程

SceneCapture2D

首先我们要创建一个蓝图,继承自SceneCapture2D,并命名为MapCapture。


SceneCapture2D

双击打开蓝图,会发现蓝图中自动包含一个CaptureComponent2D组件,这里我们重点设置这个组件中的数据。
CaptureComponent2D组件

这里主要是新建一个渲染目标,取名叫做MapRanderTarget。
Capture数据设置

然后就是新建一个材质,取名叫做Mat_MiniMap,并将MaterialDomain设置成UserInterface,否则等下会报错。
UserInterface

材质很简单,将Texture赋值上渲染目标即可。
TextureSample

设置为MapRenderTarget

ChildActorComponent

这里我故意采用和3DUI选人界面不同的实现方式,目的就是为了引出ChildActor这个Component。是的,这个组件就像godot中对scene的定义:实现Actor之间的嵌套。


ChildActor

我们添加了这个组件之后,再将ChildActorClass设置为我们上文中新建的MapCapture。


设置ChildActorClass

然后我们将组件调整到角色正上方,像这样:
角色正上方

添加到UMG_Main

对了,差点忘记最后一步,将我们的结果显示在主界面上,双击打开UMG_Main。添加一个Image并改名为IMG_MiniMap。


IMG_MiniMap

然后将Image设置为上文中新建的材质MatMiniMap即可。


设置Image

测试调优

运行结果就像文章开头的截图一样,看起来很完美。那就先这样吧。

下期预告

下期我想实现一个简单的昼夜变化系统,如果可以的话还包括天气变化。

你可能感兴趣的:(RPG游戏开发日志11:小地图实现)