Unity 3D : UI 游戏对象方向的图像

Unity 3D : UI Image in the direction of a game object

我会解释我的问题(我的英语有点蹩脚抱歉)。

我有一个能够在 Unity 场景中移动的播放器(相机)。在这个场景中有一些游戏对象。这些 GameObjects 可能距离相机太远而无法看到。我想要实现的是让 UI 图像出现在每个对象的方向上。即使物体太远。

例子:玩家站在一个位置。在他面前有一个很远的物体。我想在屏幕上显示一个 GUI,他说 "there is an object at 200 m "。如果他身后有物体,我不想让任何东西出现。但如果他回头,就会出现,因为玩家在所述游戏对象的方向。

我真的希望我说清楚了。如果您需要任何进一步的解释,请告诉我。感谢社区!

使用从玩家到游戏对象的光线投射,并计算差异。

您也可以使用 Camera.WorldToScreenPoint 计算游戏对象的 "UI-Position",然后使用游戏对象和相机的 z 坐标计算距离。

回答我自己的一个老问题:

这是我所做的:

if (markIsOp)  //Check if it's worth calculating
{

       //Calculs the Viewport Position of the object
        Vector3 ViewportPosition = Camera.main.WorldToViewportPoint (transform.position);

        //Calculs it's Unity Canvas position (O.5f because UI anchor is middle)
        Vector2 WorldObject_ScreenPosition = new Vector2 (
                                                ((ViewportPosition.x * mainCanvasRect.sizeDelta.x) - (mainCanvasRect.sizeDelta.x * 0.5f)),
                                                ((ViewportPosition.y * mainCanvasRect.sizeDelta.y) - (mainCanvasRect.sizeDelta.y * 0.5f)));

        //Making sure it's forward (markRect is my UI Element's RectTransform)
        if (ViewportPosition.z > 0)
            markRect.anchoredPosition = WorldObject_ScreenPosition;
}   

感谢您的回复。 玩得开心