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