如何使 2D 碰撞器与它们绑定的 UI 元素一起缩放?

How to make 2D colliders scale with the UI element they're bound to?

我对 Unity 还是很陌生,如果能就此问题提供任何帮助,我将不胜感激。

我有这个设置,使用我设计时使用的屏幕分辨率效果很好。我相信 UI 元素在我更改分辨率时可以很好地缩放,但我刚刚发现我制作的对撞机(图像中的红线)没有。目前,我正在使用添加到 canvas 的边缘碰撞器。我还尝试为每个面板添加单独的边缘碰撞器。然后我尝试了盒子对撞机。我试过将面板 + 对撞机变成预制件。都无济于事。我还尝试通过脚本设置边缘碰撞器的点,以便它们始终包裹在面板周围,但我不会发生任何碰撞(注意:我不知道如何 show/render 这个运行时-生成的对撞机,所以我不能完全确定它们是否正是我想要的那样)。

tldr;有谁知道如何让碰撞器缩放或环绕它们绑定的 UI 元素?

ui layout image

所以,对撞机在 UI 下运行良好。请记住,碰撞器以单位工作,但 canvas 以像素为单位。

如果您需要使用图像大小设置 BoxCollider2D 组件大小,您需要检查您使用的值 Reference Pixels per Unit 您的 Canvas Scaler.

参数

这意味着,如果您的图像宽度为 100 像素,您需要将碰撞器比例设置为 100 个单位。

这是你需要做的:

gameObject.GetComponent<BoxCollider2D>().size = new Vector2 (
    gameObject.GetComponent<RectTransform>().sizeDelta.x,
    gameObject.GetComponent<RectTransform>().sizeDelta.y
    );