Unity 2D C# - 对象内部没有碰撞

时间:2016-12-23 18:38:34

标签: c# collision-detection collision unity3d-2dtools unity3d-gui

我想知道,如何在对象内部不发生碰撞。  我有一个大圆圈,圆圈内是一个较小的正方形。当游戏开始时,圆圈会缩小。 而我想要的是检查碰撞,如果圆圈正在接触或是在广场内。

你能帮帮我吗?谢谢

1 个答案:

答案 0 :(得分:1)

据我所知,在Unity中没有内置的实现方法(也没有内置的方法来检测对撞机是否完全在另一个对撞机内部。)

如果我理解你的话,你的圈子会缩小,到达这一点时

enter image description here

你想做某事,例如。执行一些代码

基于数学,你可以使它适用于圆形和正方形的方式是:

如果你的方块的边长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是三角形边的长度。