【问题标题】:Unity 3D : UI Image in the direction of a game objectUnity 3D:游戏对象方向的 UI 图像
【发布时间】:2015-12-01 16:25:42
【问题描述】:

我会解释我的问题(对不起,我的英语有点蹩脚)。

我有一个可以在 Unity 场景中移动的玩家(相机)。在这个场景中有一些游戏对象。那些游戏对象可能太远了,相机看不到。我想要实现的是在每个对象的方向上出现一个 UI 图像。即使物体太远。

示例:玩家站在一个位置。在他面前有一个很远的物体。我想在屏幕上有一个 GUI,上面写着“200 m 处有一个物体”。如果他身后有物体,我不想出现任何东西。但是如果他回头,就会出现因为玩家是在上述游戏对象的方向上。

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

【问题讨论】:

    标签: user-interface unity3d gameobject


    【解决方案1】:

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

    这就是我所做的:

    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;
    }   
    

    感谢您的回复。 祝你愉快

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 您好,谢谢您的回答。这是我的一些代码: Vector3 tempPos1 = arCam.WorldToScreenPoint (pos); tempPos1.z = -40; img1.rectTransform.localPosition = tempPos1; pos 是游戏对象的位置。我锁定 Z 位置以不计算与显示 UI 无关的对象的距离。无论如何,这确实显示 UI,但不在正确的位置,我不知道我在做什么错。无论如何,谢谢你的时间伙伴
      【解决方案3】:

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

      【讨论】:

      • 区别是什么意思?我认为在正确的位置显示 UI 还不够?抱歉,我对这一切都不熟悉。
      • 不需要光线投射,只需 Vector3.Distance(objA, objB);
      • 谢谢大家,这对距离部分很有效。我最大的问题是关于在对象的正确方向上显示 UI
      猜你喜欢
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多