Unity做小地图,且小地图不受场景的光影响

本篇博客介绍如何在Unity中制作不受场景光照影响的小地图。通过创建两个相机,一个用于主视角,另一个用于小地图显示。Map Camera设置为正向下视,Orthographic投影,并调整Viewport Rect定位。确保Map Camera的Depth大于Main Camera。创建Player对象,将其模型和小地图图标作为子物体,并设置不同Layer以实现Main Camera和Map Camera的视线隔离。最后,通过材质球和Plane对象优化渲染性能,避免地图重复渲染。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《自学记录》

效果图

步骤

  1. 创建两个相机,分别命名为Main Camera和Map Camera,其中主相机Main Camera用于玩家的游戏视角,另一个Map Camera用于小地图。

Map Camera的属性设置

视角向正下看,看到整个地图、Projection改为Orthographic(2D类型)、调整Viewport Rect值,使小地图在自己想要的位置(X为左右、Y为上下、W为宽、H为高,我调的是在屏幕右上角)、Depth的值必须保证比MainCamera的Depth的值大,才能渲染在屏幕外层

  1. 创建个空物体命名为Player作为父物体,Main Camera和Palyer——model(Player的模型)作为Player的子物体

      一般是在空物体上加Player需要的组件

  1. 创建一个Sphere重命名为Playerico用于小地图上代替玩家的图标

  1.  把Playerico拖到Player作为Player的子物体,调整Playerico的位置,使其位于Player的正上方,小地图的摄像机可以看见,这样当玩家移动时图标会跟着移动

  1. 新建材质球,将材质球的shader设置为Unlit--Color(该材质就不会受场景中的光影响)

  1. 为了使Main Camera看不到Playerico,使Map Camera看不到player的做法如下

  1. 添加两个Layer 分别为Mask和Player

  1. 将Playerico的Layer设置为Mask,Player_model的Layer设置为Player

3.将MainCamera的CullingMask中的Mask取消勾选、MapCamera的CullingMask中的Player取消勾选(这样就不能在MainCamera视角中看到Layer是Mask的物体了)

  1. 优化性能

游戏中有两个摄像机,物体就会被渲染两次,为了不必要的渲染要把地图用图片代替,而不是直接渲染整个场景(地图图片一般由美工提供,我不会,就随便做了个),创建材质球Map,

创建个Plane命名为Map,

然后把Map Camera的属性设置为下图

最后是效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值