您好,登錄后才能下訂單哦!
這篇文章主要介紹Unity3D如何自定義公告牌,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)建一個(gè)UI的Canvas,將Render Mode模式改成World Space,然后把Canvas畫布拖進(jìn)文件夾變成預(yù)制體
添加Image背景圖,再添加Text,Canvas畫布、Text文字寬度、高度都設(shè)置為0,公告牌的大小由Image來(lái)設(shè)置
再設(shè)置一下錨點(diǎn)等相關(guān)屬性
最后綁定上我們的控制腳本
就這樣,一個(gè)自定義公告牌就制作完成
如果鏡頭縮放鏡頭設(shè)置的是鏡頭的fieldOfView值
using UnityEngine;
/*
* 自定義公告牌,跟隨鏡頭旋轉(zhuǎn)永遠(yuǎn)平行面向屏幕,跟隨鏡頭縮放縮放大小不變
*/
public class Billboard : MonoBehaviour {
Camera camera;//主鏡頭
private float _fieldOfView;//初始fieldOfView
void Start () {
camera = Camera.main;
_fieldOfView = camera.fieldOfView;
}
void Update ()
{
//跟隨鏡頭旋轉(zhuǎn),直接把主鏡頭的旋轉(zhuǎn)值賦值給公告牌即可
transform.rotation = camera.transform.rotation;
//跟隨鏡頭縮放(縮放鏡頭設(shè)置的是鏡頭的fieldOfView值)
float fieldOfView = camera.fieldOfView;
transform.localScale = new Vector3(fieldOfView/_fieldOfView,fieldOfView/_fieldOfView,fieldOfView/_fieldOfView);
}
}
如果鏡頭縮放鏡頭設(shè)置的鏡頭的位置
using UnityEngine;
/*
* 自定義公告牌,跟隨鏡頭旋轉(zhuǎn)永遠(yuǎn)平行面向屏幕,跟隨鏡頭縮放縮放大小不變
*/
public class Billboard : MonoBehaviour {
Camera camera;//主鏡頭
private float _distance;//初始距離
void Start () {
camera = Camera.main;
_distance = Vector3.Distance(camera.transform.position, transform.position);
}
void Update ()
{
//跟隨鏡頭旋轉(zhuǎn),直接把主鏡頭的旋轉(zhuǎn)值賦值給公告牌即可
transform.rotation = camera.transform.rotation;
//跟隨鏡頭縮放(縮放鏡頭設(shè)置的鏡頭的位置),根據(jù)公告牌到主鏡頭的距離來(lái)做等距離縮放即可
float distance = Vector3.Distance(camera.transform.position, transform.position);//不斷變化的距離
var scale = distance/_distance * 0.1F;
transform.localScale = new Vector3(scale,scale,scale);
}
}
以下效果是不跟隨縮放,如果想要跟隨縮放,腳本代碼注釋縮放部分即可
以上是“Unity3D如何自定義公告牌”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。