實際效果:
?文章來源地址http://www.zghlxwxcb.cn/news/detail-622703.html
需求:1.實現(xiàn)右上角小地圖,實現(xiàn)同步本地地圖
? ? ? ? ? 2.實現(xiàn)小地圖內的角色圖標和實際角色同步
實現(xiàn)原理:
1.在所需要的地圖上劃分為一下結構
圖層Tilemap6_Minimap的Layer為Minimap
同時這里說一個問題,在同層級的圖片,序列越晚渲染越上層
2.使用另一個攝像機渲染小地圖,并將這個渲染放到一張紋理上,最后把這個紋理丟到rawImage里并放到地圖右上角
3.所以其實就是通過紋理實現(xiàn)小地圖,本質上我們小地圖其實和地圖同時運作,只不過我們的主攝像機不渲染小地圖,我們把小地圖渲染在紋理上,最后輸出在UI里
4.通過腳本同步Icon和角色位置即可
地圖本來顯示:
小地圖顯示:
?
2.主視角攝像機不顯示Minimap層級,carmer2(也就是小地圖攝像機)
3.創(chuàng)建小地圖所需資源
層級如下:
分別為:角色小地圖Icon;小地圖攝像機 ,小地圖光源,小地圖實際攝像機
這里要注意,同層級只能同時有一個全局光源
1.角色Icon:
,其實怎么設置不重要,只要把自己需要的icon丟進去就行,記得layer設成minimap;
2.小地圖攝像機
:
修改只有四點:相機屬性設為正交,只需要渲染攝像機2和Minimap;背景為純色,輸出(output)在紋理上
紋理信息:
至于創(chuàng)建在create第一層級里找就好了,分類在渲染那里;
?3.cinemachine相機:沒什么需要改的,因為Follow我們會寫在腳本里
?文章來源:http://www.zghlxwxcb.cn/news/detail-622703.html
到這一步,我們已經完整設置了小地圖在相機上的顯示,(記得調一下相機的優(yōu)先顯示,priority,會決定哪個相機先顯示)
2.第二步:腳本:讓圖標和我們的角色同步:實現(xiàn)很簡單:
1.讓cinemachine相機跟隨icon,其實設置一下也行問題不大,
2.同步icon的位置和角色位置(在角色腳本設置一個GetTransform()返回角色Transform即可):腳本如下
public class MiniMap : MonoBehaviour
{
[SerializeField] private GameObject miniMapPlayer;
private Transform playerTransform;
private void Start()
{
playerTransform=GameManager.Instance.GetPlayer().transform;
CinemachineVirtualCamera cinemachineVirtualCamera=GetComponentInChildren<CinemachineVirtualCamera>();
cinemachineVirtualCamera.Follow = playerTransform;
SpriteRenderer spriteRenderer= miniMapPlayer.GetComponent<SpriteRenderer>();
if (spriteRenderer != null)
{
spriteRenderer.sprite = GameManager.Instance.GetPlayerMiniMapIcon();
}
}
private void Update()
{
if (playerTransform != null && miniMapPlayer != null)
{
miniMapPlayer.transform.position = playerTransform.position;
}
}
}
?第三步:顯示到UI上:
問題:記得我們是不顯示carmer2和mimap的圖像的,所以在這里記得把層級設為UI,我們是需要顯示的
具體操作1。錨點丟到右上角,所有設置為0就行
?操作二:使用rawImage實現(xiàn)輸出紋理,這里位置放在哪看個人喜好
到這里為止我們的小地圖就算實現(xiàn)了。
?
?
?
?
?
?
到了這里,關于Unity 關于制作一個2D的小地圖的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!