相机距离相对文本网格大小

时间:2017-04-25 09:28:15

标签: c# unity3d

我正在搜索一个可以根据相机距离保持文本网格大小的fromula。我想要的是,无论我的相机是近距离还是远离文字网格,我的文字显示总是具有相同的宽度和高度。我试过这个,但问题仍然存在于某种程度上

float  size = (activeCam.transform.position - transform.position).magnitude;
            newLocalScale = new Vector3(size / 108, size / 108, size / 108);
            transform.localScale = newLocalScale;

enter image description here

1 个答案:

答案 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