unity3d讓模型不受3dCamera FOV的影響

當3dCamera 調整fov 的時候,被查看的物體會產生位移,或者縮放的的效果,
比如我們在3dCamera 顯示一個logo,是希望這個Quad 是不受到Camera的fov影響的
上代碼

public class FovTest : MonoBehaviour {

    public GameObject go1;//這個是Quad
    public Camera cam;//這個是3dCamera

    public Vector3 locv3 = Vector3.zero;//保存轉換後的屏幕座標
    public Vector3 locs = Vector3.zero;//保存初始大小
    float dis = 0;//保存2個物體距離
	// Use this for initialization
	void Start () {
        Vector3 v3 = cam.WorldToScreenPoint(go1.transform.position);
        locv3 = new Vector3(v3.x, v3.y, v3.z);
        locs = new Vector3(go1.transform.localScale.x, go1.transform.localScale.y, 1);
        dis = Vector3.Distance(go1.transform.position, transform.position);
	}
	
	// Update is called once per frame
	void Update () {
        go1.transform.localPosition = cam.ScreenToWorldPoint(locv3);
        float frustumHeight = 2.0f * dis * Mathf.Tan(cam.fieldOfView * 0.5f * Mathf.Deg2Rad);
        go1.transform.localScale = locs * (frustumHeight / 8f);
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章