Unity游戏小地图生成

发表于2017-10-16
评论0 2.4k浏览

这个在AssetStore上有几个不错的插件, 除了知道原理,能自己实现才是最好的。通常情况下很多插件是不会直接使用的,而是要根据自己项目的需求进行修改或者就是自己写。就像下面和大家介绍的这个Unity游戏小地图生成,就需要自己动动手了。


那么我们要怎么弄呢? 大家可以先了解一下:https://www.assetstore.unity3d.com/en/#!/content/10043 项目Demo的代码,就会看到小地图的应用,其实原理都是一样的!关于这一部分,网上也有很多相关资料


按照以下步骤实现小地图这个功能:

步骤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 ,将其指定给小地图摄像机,添加代码如下:

  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. [AddComponentMenu("Game/MiniCamera")]  
  5. public class MiniCamera : MonoBehaviour {  
  6.   
  7.     // Use this for initialization  
  8.     void Start () {  
  9.         // 获得屏幕分辨率比例  
  10.         float ratio = (float)Screen.width / (float)Screen.height;  
  11.         // 使摄像机视图永远是一个正方向, rect的前两个参数表示XY位置,后两个参数是XY大小  
  12.         this.GetComponent<Camera>().rect = new Rect((1 - 0.2f), (1 - 0.2f * ratio), 0.2f, 0.2f * ratio);  
  13.     }  
  14. }  

这里的代码很简短, 主要是使小地图摄像机的视图永远是一个正方形。


步骤10:

因为主摄像机上已经有了一个AudioListener, 同一个场景中只允许存在一个该组件,所以要取消选中(或删除)小地图摄像机的【AudioListener】,如图所示。

OK   完毕。


如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论