我正在搜索一个可以根据相机距离保持文本网格大小的fromula。我想要的是,无论我的相机是近距离还是远离文字网格,我的文字显示总是具有相同的宽度和高度。我试过这个,但问题仍然存在于某种程度上
float size = (activeCam.transform.position - transform.position).magnitude;
newLocalScale = new Vector3(size / 108, size / 108, size / 108);
transform.localScale = newLocalScale;
答案 0 :(得分:0)
使用World To Screen Space和Screen To World Space方法,使用此代码保持所有文本网格的大小不变(当然,将脚本附加到所有文本网格对象):
public Camera activeCam;
public float sizeOfText = 20;
void Update () {
Vector3 textScreenSpace = activeCam.WorldToScreenPoint(transform.position);
Vector3 adjustedScreenSpace = new Vector3(textScreenSpace.x + sizeOfText, textScreenSpace.y, textScreenSpace.z);
Vector3 adjustedWorldSpace = activeCam.ScreenToWorldPoint(adjustedScreenSpace);
transform.localScale = Vector3.one * (transform.position - adjustedWorldSpace).magnitude;
transform.rotation = activeCam.transform.rotation;
}
编辑:还有另一种获取相同结果的方法,使用Plane
,它位于Unity Wiki上 - http://wiki.unity3d.com/index.php/CameraRelativeScale