如何使 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
);
我对 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
);