當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);
}
}