Unity遊戲小地圖產生,Unity遊戲地圖產生
孫廣東 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 initializationvoid 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 完畢。
如果希望繼續改進小地圖的顯示,還可以為情境專門製作一個用於小地圖顯示的模型。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。