小地圖的製作
阿新 • • 發佈:2018-12-12
為了節約效能,這裡我們使用圖片作為小地圖的背景,而不是新新增一個相機實時渲染地形。
- 首先,需要裁剪地形。 在Scene檢視下,將視角調整到合適,裁剪的效果的如下的:位置。
2.新建Image,匯入裁剪素材
3.新建一個箭頭來模擬Player,新增MiniMap指令碼。
製作過程:
- 人物旋轉和箭頭同步
- 人物與地形的比例關係
- 箭頭和小地圖的比例關係
程式碼如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class LitMap : MonoBehaviour { /// <summary> /// 地形 /// </summary> private Terrain terrain; private Transform player; /// <summary> /// 小地圖 /// </summary> private RectTransform miniMap; /// <summary> /// 箭頭 /// </summary> private RectTransform arrow; // Use this for initialization void Start() { player = GameObject.FindWithTag("Player").transform; terrain = GameObject.FindWithTag("Terrain").GetComponent<Terrain>(); miniMap = transform.parent.GetComponent<RectTransform>(); arrow = GetComponent<RectTransform>(); //Debug.Log(player.name + terrain.name + arrow.name + miniMap.name); } // Update is called once per frame void Update() { if (player && terrain) { /* * 人物旋轉和箭頭同步 * 1.人物與地形的比例關係 * 2.箭頭和小地圖的比例關係 */ arrow.rotation = Quaternion.Euler(0, 0, -player.transform.rotation.eulerAngles.y + 90); float tmpX = player.position.x / terrain.terrainData.size.x; float tmpY = player.position.z / terrain.terrainData.size.z; tmpX = miniMap.rect.x * tmpX; tmpY = miniMap.rect.y * tmpY; //轉換為螢幕座標 arrow.anchoredPosition = new Vector2(-tmpX, -tmpY); } } }