[英]Unity 2D C# - no collision inside an object
我想知道,如何在物体内部不发生碰撞。 我有一个大圆圈,圆圈内是一个较小的正方形。 游戏开始时,圆圈会缩小。 我想要的是检查是否发生碰撞,如果圆形接触或在正方形内。
你能帮我么 ? 谢谢
据我所知,在Unity中没有实现此目的的内置方法(也没有检测对撞机是否完全位于另一对撞机内部的内置方法)。
如果我对您的理解正确,那么您的圈子就会缩小,并且当达到这一点时
您想做一些事情, 例如执行一些代码 。
仅基于数学就可以使它适用于圆形和正方形的方式是:
如果正方形的边长为a
而圆的半径为r
递减,那么此时您在图像上方看到的这两者之间的关系是:
r = a / sqrt(2)
因此,您可以检查Update
函数中是否基于该函数调用if (r <= a / Mathf.Sqrt(2))
。 (也许添加另一个布尔值以确保该函数仅被调用一次。)
您可以使用以下方式获取精灵宽度
width = GetComponent<SpriteRenderer>().bounds.size.x;
这样,您的圆的半径显然将是圆精灵的宽度的一半。
您可能还应该将SpriteRenderer
存储在一个变量中,而不是在每个帧上都调用GetComponent
。
对于等边三角形,等式为
r = a / sqrt(3)
其中a
是三角形边的长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.