【发布时间】:2016-05-19 14:22:56
【问题描述】:
我有两个用SpriteRenderer 渲染的Paddle。它们附有BoxCollider,它们工作得很好。但是,它们不能以不同的分辨率正确缩放。所以我转而在画布中使用Image。它们完美地扩展。但是,我似乎无法让BoxCollider 与Paddle 正确缩放。我在互联网上搜索并找到了一些解决方案,但它们完全错误。以下是我根据我所看到的大部分内容得出的结论:
GetComponent<BoxCollider2D>().size = gameObject.GetComponent<RectTransform>().sizeDelta;
这根本不起作用。
这是我需要的图片,以防不清楚。
绿色框是该图像中的正确大小,但这不是发生的事情,这是我需要发生的事情。
所以,基本上我需要一种方法将BoxCollider2D 缩放到Canvas 中Image 的大小。
这是Paddle和Canvas的检查员的图片(注意:Paddle有脚本,我把它剪掉了,反正它不起作用):
另请注意:我需要碰撞器的原因是因为我正在检查两个游戏对象(球和桨)之间的碰撞。这是乒乓球。
【问题讨论】:
-
不要在 UI 元素上使用碰撞器。如果您想点击 UI 元素,请改用 Button 组件。
-
我不确定,但我认为它可以提供帮助,您已经从 sprite 渲染器和 boxcollider2D 获得了一个对象的 sprite,您希望 boxcollider2D 以某种方式缩放,因为分辨率会改变您的精灵更改,通过精灵的边界获取精灵的大小,使用 GetComponent
().sprite.bounds.size 并类似地获取 GetComponent ().bounds.size 并为 boxcollider 创建一个新的边界精灵边界。等式减半或增加你的盒子碰撞器边界