我有一个游戏对象,它存在于我的场景中的世界空间中。我想在屏幕空间中获取此游戏对象的渲染器的边界矩形角的坐标,因为我有想要定位在此框周围的 UI 元素。
背景:我正在制作一个教程,并且我正在使用面板来使所有内容变暗,除了一个不会变暗的游戏对象。我可以使用已经存在于屏幕空间中并对其进行矩形变换的按钮轻松完成此操作,但我无法弄清楚如何围绕世界空间中的游戏对象执行此操作。我们使用的是带正交投影的相机,并且使用的是 Unity 版本 2019.2.17f1。
这是我尝试过的:
public void FocusOnRenderer(Renderer renderer) {
// left, top, right, and bottom are Panels whose pivots are set as follows:
// top: (1, 0)
// right: (0, 0)
// bottom: (0, 1)
// left: (1, 1)
// so when their positions are set to be the corners of the target bounding box, they will fit together nicely.
left.gameObject.SetActive(true);
top.gameObject.SetActive(true);
right.gameObject.SetActive(true);
bottom.gameObject.SetActive(true);
Vector3 center = HandleUtility.WorldToGUIPoint(renderer.bounds.center); // center of bounding box
Vector3 halfSize = HandleUtility.WorldToGUIPoint(renderer.bounds.extents)); // half size of bounding box
Vector3 topRight = center + halfSize;
Vector3 topLeft = center + new Vector3(-halfSize.x, halfSize.y, halfSize.z);
Vector3 bottomRight = center + new Vector3(halfSize.x, -halfSize.y, halfSize.z);
Vector3 bottomLeft = center + new Vector3(-halfSize.x, -halfSize.y, halfSize.z);
left.position = topLeft;
top.position = topRight;
right.position = bottomRight;
bottom.position = bottomLeft;
}
我认为这是错误的,因为我正在使用渲染器的边界来计算 halfSize 和 center 并没有给我一个边界矩形。我希望有一种简单的内置方法可以做到这一点,但到目前为止我还没有找到任何东西。
感谢您的帮助!