很多时候我们需要基于摄像机所正对的平面进行移动物体,比如,我需要在物体上方显示一个UI,这时候我们需要的其实并不是“物体的Y轴向的所谓的上方”,而是“当前观察的物体与摄像机观察方向垂直平面的上方”,哎说不清楚了,上代码吧。
这是一个在物体“上方”显示UI的做法参考:
voidUpdatePosition()
{
if (obj)
{
Vector3 localToCam = Camera.main.transform.InverseTransformPoint(obj.bounds.center);
localToCam += Vector3.up * obj.bounds.size.y;
Vector3 worldPos = Camera.main.transform.TransformPoint(localToCam);
Vector2 screenPos = RectTransformUtility.WorldToScreenPoint(Camera.main, worldPos);
Vector2 anchoredPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(parent, screenPos, null, out anchoredPos);
rectTran.anchoredPosition = anchoredPos + Vector2.up * 20;
}
}
