我想知道,如何在对象内部不发生碰撞。 我有一个大圆圈,圆圈内是一个较小的正方形。当游戏开始时,圆圈会缩小。 而我想要的是检查碰撞,如果圆圈正在接触或是在广场内。
你能帮帮我吗?谢谢答案 0 :(得分:1)
据我所知,在Unity中没有内置的实现方法(也没有内置的方法来检测对撞机是否完全在另一个对撞机内部。)
如果我理解你的话,你的圈子会缩小,到达这一点时
你想做某事,例如。执行一些代码。
基于数学,你可以使它适用于圆形和正方形的方式是:
如果你的方块的边长a
并且你的圆的半径减小r
,那么在你上面的图片中看到它们之间的关系是:
r = a / sqrt(2)
因此,您可以检查if (r <= a / Mathf.Sqrt(2))
函数中的Update
并根据该调用查看某些函数。 (也许添加另一个布尔值以确保只调用一次函数。)
您可以使用
获取精灵宽度width = GetComponent<SpriteRenderer>().bounds.size.x;
圆的半径显然是圆形精灵宽度的一半。
您可能还应该将SpriteRenderer
存储在变量中一次,而不是在每一帧上调用GetComponent
。
对于等边三角形,等式为
r = a / sqrt(3)
其中a
是三角形边的长度。