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;
}
感谢您的回复。
玩得开心
我会解释我的问题(我的英语有点蹩脚抱歉)。
我有一个能够在 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;
}
感谢您的回复。 玩得开心