2017-04-25 36 views
1

我正在寻找一个可以根据距离相机的距离保持我的文本网格大小的自由度。我希望无论我的相机离文本网格近或远,我的文本总是以相同的宽度和高度显示。我曾经试过,但问题仍然存在某种程度上相机距离相对文本网格大小

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

enter image description here

回答

0

利用世界到屏幕空间和屏幕到世界空间的方法来保持所有文本的大小网格,此代码不变(附加脚本当然所有文字网格对象):

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,它是在统一维基 - http://wiki.unity3d.com/index.php/CameraRelativeScale

+0

没有男人的大小还是不一样 –

+0

忘了补充一行以保持文本网格总是平行于相机,我的不好。 – Galandil