一、前言

小地图功能在很多游戏中都有,特别是RPG游戏,在Unity中如何实现小地图功能呢,我来教你。

二、思路

专门创建一个顶视角的摄像机,然后摄像机有个Target Texture属性,可以将渲染的图形输出到Render Texture中,我们使用UGUIRaw Image来显示这张Render Texture即可。

三、GitHub工程

本文的Demo工程我已上传到GitHub,感兴趣的同学可以自行下载进行学习。注:我用的Unity版本是:Unity 2020.1.2f1c1 (64-bit)。GitHub工程地址:https://github.com/linxinfa/Unity-Minimap

四、具体步骤

1、创建一个顶视角摄像机


2、创建Render Texture

创建Render TextureRender Texture赋值给顶视角摄像机的Target Texture

3、使用Raw Image显示

创建一个RawImageRenderTexture赋值给RawImageTexture属性

四、运行效果

运行Unity效果如下

五、优化

1、Mask蒙版边缘锯齿问题

上面小地图通过了Mask组件实现了圆形蒙版的效果。有一个小小的缺点,就是圆形边缘有锯齿。放大看一看就可以看到

2、解决方案

首先我们的蒙版图片如下,是一个白色的圆,周围是透明的。我们知道颜色值的表示是:(r, g, b, a),白色就是(1, 1, 1, 1),透明部分的颜色为(0, 0, 0, 0)

摄像机渲染出来的小地图RenderTexture如下。如果我们取某个像素点的颜色看,它可能是这样子的(0.31, 0.15, 0.7, 1)想要让小地图以蒙版图的形状显示,我们只需取蒙版图的alpha通道作为小地图的alpha通道即可。对应成shader代码就是

fixed4 frag(v2f IN) : SV_Target{

现在我们只自定义一个shader(完整shader代码见下文),赋值给一个材质球,然后把材质球赋值给小地图RawImageMaterial即可我们放大效果对比看看,左边是UGUIMask效果,右边是我们通过shader实现的Mask效果,可以看到锯齿基本没有了,平滑了很多。  

六、加个主角和摄像机跟随逻辑

主角,我就用一个正方体Cube替代了,加上WASD控制移动逻辑,然后主摄像机和顶视角摄像机跟随逻辑,再对比展示两种方式实现的小地图效果,最终效果如下,详细代码见下文或直接下载我的Demo工程学习

七、代码部分

1、shader脚本:Default-Mask.shader

" UIEx/Default-Mask"

2、主角移动控制脚本:PlayerCtrler.cs

//PlayerCtrler.cs

3、主摄像机跟随脚本:PlayerCameraFollow.cs

//PlayerCameraFollow.cs

4、顶视角摄像机跟随脚本:MiniMapCameraFollow.cs

//MiniMapCameraFollow.cs

长按识别二维码,关注不迷路

unity角色移动代码_教你3个步骤实现Unity小地图相关推荐

  1. python名片制作代码_教你做一张能运行 Python 的名片,成本只要20元!

    原标题:教你做一张能运行 Python 的名片,成本只要20元! 作为一名普普通通的开发者,改变世界估计是办不到了,但可以让世界更 Geek 一些. 极客名片的诞生 如标题所说,表面上看这是一个名片, ...

  2. java 角色管理代码_后台管理系统-角色管理模块

    1 角色管理设计说明 1.1 业务设计说明 本模块主要实现的是企业内部角色(岗位)的管理,可以在添加角色时,为角色分配资源访问权限,最后将角色再分配给用户,图所示: 基于对表的设计,其数据逻辑关系的展 ...

  3. python画动态爱心代码_教你用python画动态爱心表白

    原标题:教你用python画动态爱心表白 初级画心 学Python,感觉你们的都好复杂,那我来个简单的,我是直接把心形看作是一个正方形+两个半圆: 于是这就很简单了,十行代码解决: import tu ...

  4. python画美女代码_教你用python爬取网站美女图(附代码及教程)

    我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...

  5. qq满屏飞吻代码_教你用微信隐藏代码表白!各种微信技巧

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.注:本文转载自网络,不代表 ...

  6. mysql用户角色权限代码_用户权限管理代码

    用户权限管理代码 define('PATTERN_MODE_INT',                1); define('PATTERN_MODE_STRING',        2); func ...

  7. python抢票代码_教你用Python动刷新抢12306火车票,附源码!

    用python另一个抢票神器,你get到了吗? 2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据 ...

  8. html动态网页效果代码_教你制作网页的第一步

    Internet中有许多漂亮.美观的网页,要制作出这样的网页,必须先了解什么是网页,网页的基本组成是怎样的. 网页又称为Web页,一般都包含图像.文字和超链接等元素.按表现形式的不同,网页可分为静态网 ...

  9. 用c语言写代码_教你如何用android mvp分层架构优雅写代码

    背景 看了好多android技术博客,写android分层架构的博客越来越多,有mvc.mvp.mvvm.clean等各式各样的,而mvp异常火热,然而每个人对mvp的定义又是不同,写法自然也是千紫万 ...

最新文章

  1. pytorch gans
  2. msicuu.exe (msizap.exe),程序的作用
  3. TensorRT was linked against cuBLAS/cuBLAS LT 11.2.0 but loaded cuBLAS/cuBLAS
  4. 基于IPV6的数据包分析
  5. Action访问Servlet API的三种方法
  6. 中国环保塑料薄膜行业营销策略分析及投资规划建议报告2021-2027年版
  7. 引入JQuery提示:Uncaught ReferenceError: $ is not defined
  8. eureka java_spring cloud 入门系列二:使用Eureka 进行服务治理
  9. 《系统集成项目管理工程师》必背100个知识点-95我国信息化基本原则
  10. r perl python电脑要求_Shell Perl Python 介绍
  11. COLING 2020 | CharBERT:字符敏感的预训练语言模型
  12. SAP Spartacus State
  13. 树TreeView控件与DataTable交互添加节点(最高效的方法)
  14. unity3d 求两个点长度_三年级上册求组合图形周长专项练习,附答案
  15. java打印日历至Excel_2013日历打印_Excel2013,如何实现点击单元格就出现日历,操作者......
  16. 微信小程序图片无法显示时显示默认图片
  17. element-ui tabs组件导致页面假死浏览器崩溃
  18. 妇科癌症中的肠道菌群:病因、治疗潜力
  19. 数字全角转半角VBA
  20. Python项目实战:绕圈圈面试题

热门文章

  1. JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
  2. 提高你30%的设计效率的PPT快捷键
  3. 在Linux下开发多语言软件(gettext解决方案)
  4. word打开时报Cannot find the Word document template:WordToRqm.dot
  5. codeforces B. Eight Point Sets 解题报告
  6. POJ 2388 Who's in the Middle
  7. .h头文件 .lib动态链接库文件 .dll 动态链接库
  8. js插件---JS表格组件BootstrapTable行内编辑解决方案x-editable
  9. 在Openstack上部署compute节点上时,开启服务openstack-nova-compute.service无法启动的解决方法
  10. 每天一点点之vue框架开发 - axios解决跨越问题