繁体   English   中英

Unity 2D C#-对象内部无冲突

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM