孙广东 2015.6.25
按部就班的实现这个功能:
步骤1:
在菜单栏中选择【GameObject】-》【Create Other】-》【Camera】 创建一个新的摄像机,它将作为小地图的专用摄像机,调整他的位置,使其在场景上方垂直向下, 然后将其设置为Orthographic, 取消透视并调整Size的值,改变视图大小,设置Viewport Rect 改变摄像机显示区域的位置和大小, 如图所示:
步骤2:
运行游戏,屏幕的右上方即会出现一个小地图,但根本看不清里面的东西,可能位置不正确。
现在的小地图摄像机和正常摄像机的显示是一样的,只不过它是从上向下看。接下来,我们要做的是使小地图摄像机只专注自己需要的东西,并通过脚本使小地图摄像机的视图无论在何种分辨率下永远是一个正方形。
步骤3:
创建一个球体,命名为dummy, 将其材质设置为,红色Self-Illumin/Diffuse, 它将作为敌人的 “替代体” 只能显示在小地图之中,并不能在主摄像机视图显示出来。将球体Sphere Collider 去掉。我们只需要它的显示功能。
步骤4:
创建一个Layer,命名为dummy, 并设置球体的Layer位dummy。
步骤5:
将球体置于敌人Prefab的层级之下,这样它会随着敌人的移动而移动,如图所示:
步骤6:
选择 主摄像机,取消显示 dummy层,球体在主摄像机视图中将不会被显示出来,如图所示:
步骤7:
选择小地图摄像机,使其只显示level 和 dummy 层,这样在小地图中只能看到场景和球体。如图所示
步骤8:
使用相同的方法为主角也创建一个”替代体“ ,可以为其制定与敌人不同的颜色。
步骤9:
创建脚本 MiniCamera.cs ,将其指定给小地图摄像机,添加代码如下:
using UnityEngine; using System.Collections; [AddComponentMenu("Game/MiniCamera")] public class MiniCamera : MonoBehaviour { // Use this for initialization void Start () { // 获得屏幕分辨率比例 float ratio = (float)Screen.width / (float)Screen.height; // 使摄像机视图永远是一个正方向, rect的前两个参数表示XY位置,后两个参数是XY大小 this.GetComponent<Camera>().rect = new Rect((1 - 0.2f), (1 - 0.2f * ratio), 0.2f, 0.2f * ratio); } }
这里的代码很简短, 主要是使小地图摄像机的视图永远是一个正方形。
步骤10:
因为主摄像机上已经有了一个AudioListener, 同一个场景中只允许存在一个该组件,所以要取消选中(或删除)小地图摄像机的【AudioListener】,如图所示。
OK 完毕。
如果希望继续改进小地图的显示,还可以为场景专门制作一个用于小地图显示的模型。
原文地址:http://blog.csdn.net/u010019717/article/details/46632415