有時候我們希望公告牌跟隨鏡頭旋轉永遠平行面向屏幕,同時跟隨鏡頭縮放縮放大小不變(鏡頭遠離物體,正常物體視覺效果變小,但公告牌視覺大小比例不變),或者跟隨鏡頭縮放變化,本文記錄C#腳本的兩種實現方式
製作公告牌創建一個UI的Canvas,將Render Mode模式改成World Space,然後把Canvas畫布拖進文件夾變成預製體
添加Image背景圖,再添加Text,Canvas畫布、Text文字寬度、高度都設置為0,公告牌的大小由Image來設置
再設置一下錨點等相關屬性
最後綁定上我們的控制腳本
就這樣,一個自定義公告牌就製作完成
方式一如果鏡頭縮放鏡頭設置的是鏡頭的fieldOfView值
using UnityEngine;
public class Billboard : MonoBehaviour { Camera camera;
private float _fieldOfView;
void Start () { camera = Camera.main; _fieldOfView = camera.fieldOfView; } void Update () { transform.rotation = camera.transform.rotation; float fieldOfView = camera.fieldOfView; transform.localScale = new Vector3(fieldOfView/_fieldOfView,fieldOfView/_fieldOfView,fieldOfView/_fieldOfView); }
}方式二如果鏡頭縮放鏡頭設置的鏡頭的位置
using UnityEngine;
public class Billboard : MonoBehaviour { Camera camera;
private float _distance;
void Start () { camera = Camera.main; _distance = Vector3.Distance(camera.transform.position, transform.position); } void Update () { transform.rotation = camera.transform.rotation;
float distance = Vector3.Distance(camera.transform.position, transform.position); var scale = distance/_distance * 0.1F; transform.localScale = new Vector3(scale,scale,scale); } }效果以下效果是不跟隨縮放,如果想要跟隨縮放,腳本代碼注釋縮放部分即可
後記自定義公告牌暫時先記錄到這,後續再進行補充
聲明:發布此文是出於傳遞更多知識以供交流學習之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與我們聯繫,我們將及時更正、刪除,謝謝。
作者:huanzi-qch
來源:http://www.cnblogs.com/huanzi-qch/p/12125265.html
More:【微信公眾號】 u3dnotes