我想知道,如何在物体内部不发生碰撞。我有一个大圆圈,圆圈内是一个较小的正方形。游戏开始时,圆圈正在缩小。我想要的是检查碰撞,如果圆圈接触或在正方形内。
你能帮我么 ?谢谢
我想知道,如何在物体内部不发生碰撞。我有一个大圆圈,圆圈内是一个较小的正方形。游戏开始时,圆圈正在缩小。我想要的是检查碰撞,如果圆圈接触或在正方形内。
你能帮我么 ?谢谢
据我所知,在 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
是三角形边的长度。