做C++项目的时候遇到了一个小地图的问题,从网上找了个蓝图的思路,转载一下。

原文:https://www.engineworld.cn/thread-3835-1-1.html

本文使用ue4提供的SceneCapture2D(场景照相机)来创造一个游戏中俯瞰的实时小地图,并将其固定显示在界面左上角。 此例子仅说明正交相机和UI用户界面的基本使用。 首选,我们需要拖入一个SceneCapture2D组件到场景,

此相机默认使用的是透视投影,我们需要在它的属性中设置投影模式为正交投影,即设置属性中的Projection一项,选择Projection Type为Orthographic(正交图),

再为相机指定一个渲染目标,你可以在资源文件夹右键新建一个RenderTarget然后再把它绑定到相机的Texture Target属性上,

至此,相机的设置就完毕。这时候,我们回到场景中,调整一下相机的位置和朝向,让它朝着正下方,
 
可以看到,稍微移动一下相机位置后,刚创建的渲染目标(RenderTarget)上已经发生了变化,该图就是我们需要的场景俯视图;

接下来,我们需要将这张图以UI界面的形式固定显示在游戏视口(ViewPort)上,以实现类似小地图的效果。

我们要用到widget 组件来创建UI,先右键新建一个widget蓝图,
 
然后双击新建的这个widget蓝图,进入UI编辑界面,在左侧控件栏找到Image控件将其拖入中间的设计视图(该视图相当于游戏中的主视口,拖入的控件位置将以同样的相对位置显示在游戏视口上),然后调整一下位置到左上方,
 
选择该Image控件,在右侧属性找到Brush->Image一项,将其图像设置为我们刚创建的RenderTarget,
 
注意编辑完保存,好了,UI的设置也已完成,那么怎么应用我们的UI呢?很简单,回到主场景,打开关卡蓝图,在蓝图中编写如下逻辑,
 
逻辑很简单,即创建一个widget,选择为我们自己刚新建的widget蓝图,然后将其添加到视口。点击运行,就可以看到效果:

可以看到,在左上角显示了我们的场景俯视图。并且该图是实时刷新的。当然,在此基础上后面可以做的还有很多,例如接下来你可以在蓝图中编写逻辑让正交相机的位置和主摄像机同时移动,即可以看到一个随主角移动的小地图等等。

后续会尝试用C++实现

ue4使用SceneCapture2D创建小地图示例 蓝图的更多相关文章

  1. MFC创建线程示例

    MFC创建线程示例 AfxBeginThread() 创建现场的方法是AfxBeginThread()函数. 在[.CPP]文件定义一个全局变量,决定什么时候退出这个线程. BOOL g_bWillE ...

  2. Oracle中创建触发器示例及注意事项

    1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...

  3. UE4使用C++创建枚举变量适用于C++与蓝图

    这个月勉勉强强才写了一篇,都快月底了,都还没有写第二篇博客的冲动,证明这个月确实收获甚少,有点状态不佳,懒毒入骨啊.刚刚看了这个月其实已经写了三篇,然而事实是这博客还有另外一个人也在更新文章,博主并没 ...

  4. UE4使用widget创建UI界面播放视频

    我的目的非常简单,点击按钮,播放或暂停场景中的视频 1.准备了一个mp4视频资源,为视频资源创建了一个Media Texture,在Media Player中选择导入进来的视频资源,再为Media T ...

  5. UE4 Hello World 创建第一个UE4工程

    首先先熟悉几个UE4常用的类 AGameMode(控制整个项目的逻辑) The GameMode defines the game being played. It governs thegame r ...

  6. 如何运用TurboDemo创建视频示例

    TurboDemo不仅可以速抓取屏幕截图,而且可高效制作出时尚美观的介绍.演示动画.软件模拟以及使用说明.下面的例子将会告诉使用者们如何分步创建一个视频示例,帮助使用者们快速的上手: 1.开启Turb ...

  7. UE4学习心得:Scene Component蓝图的一个简单应用

    Scene Component是蓝图类中一个不怎么常用的分类(特别是对于新手而言),主要是其实现的功能可以在Actor类中用相同的方法实现,使其作用显得有点多余. 笔者在使用过这个类之后发现其作用更相 ...

  8. IntelliJ IDEA安装scala插件并创建scala示例

    1.http://blog.csdn.net/a2011480169/article/details/52712421 2.http://blog.csdn.net/stark_summer/arti ...

  9. oracle创建HR示例数据库脚本hr_main.sql分享

    需求描述: 今天一同事想要在测试库上进行SQL练习,帮忙安装下这个示例数据库,在此记录下. 操作过程: 1.上传hr_main.sql脚本(10g 11g都可用) 脚本下载链接: https://pa ...

随机推荐

  1. java常用基础(一)

    Java常用基础(一) 原文写于2017-12-02 输入输出 //输入 Scanner in = new Scanner(new BufferedInputStream(System.in)); i ...

  2. GO代码生成代码小思小试

    推进需求 GO 项目,可整体生成一个运行文件到处跑,是极爽之事.但如果有资源文件要得带着跑,则破坏了这种体验. 例如下边这个项目结构,resource 目录下为资源文件,main.go 中会通过路径引 ...

  3. 使用Appium做手机自动化录制问题

    最近在使用appium做Android手机自动化脚本录制, 发现点击“tap”时,一直没有用,页面还是不能跳转. 咋办?发愁... 于是看到旁边有个“sendkeys”,那是不是能够直接发送参数不就行 ...

  4. Azkaban Flow 2.0 使用简介

    官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用 目录 目录 一.简单的Flow 1. 新建 flow20.project 文件 2. 新建 .flow 文件 3. ...

  5. redis module 学习—官网文档整理

    前言 redis在4.0版本中,推出了一个非常吸引的特性,可以通过编写插件的模式,来动态扩展redis的能力.在4.0之前,如果用户想拥有一个带TTL的INCRBY 命令,那么用户只能自己去改代码,重 ...

  6. 基于SpringCloud的Microservices架构实战案例

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. 渐进式web应用开发--拥抱离线优先(三)

    _ 阅读目录 一:什么是离线优先? 二:常用的缓存模式 三:混合与匹配,创造新模式 四:规划缓存策略 五:实现缓存策略 回到顶部 一:什么是离线优先? 传统的web应用完全依赖于服务器端,比如像很早以 ...

  8. Java面试题汇总---基础版(附答案)

    基于我个人对面试的认知和招聘经验,在此我总结一下Java开发者的基础知识掌握要求,及应聘者面试的需要准备的内容. 首先,Java基础是每个面试官都会问到的,可能只是针对工作经验的多少,对问题追踪深度有 ...

  9. Java编程思想:擦除的神秘之处

    import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; public class Test ...

  10. pgsql查询优化之模糊查询

    前言 一直以来,对于搜索时模糊匹配的优化一直是个让人头疼的问题,好在强大pgsql提供了优化方案,下面就来简单谈一谈如何通过索引来优化模糊匹配 案例 我们有一张千万级数据的检查报告表,需要通过检查报告 ...