0

我想知道,如何在物体内部不碰撞。 我有一个大圆圈,圈内是一个较小的正方形。当游戏开始时,该圆圈缩小。 而我想要的是检查碰撞,如果圈子触摸或在广场内。Unity 2D C# - 物体内没有碰撞

你能帮我吗?谢谢

+0

圆和方形都有相同的中心吗?因为如果是这样,你可以使用基本的数学方法,根本不需要任何碰撞检测。 – Keiwan

+0

是的,他们有相同的中心。还有其他的一点,我想提到的是改变gameobject的精灵。圆形可以改变三角形或方形等几何物体 – CallMany

+0

但是它会好的,如果你告诉我如何检测这两个物体的碰撞(方形圆) – CallMany

回答

1

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

如果我明白你正确地你的圈子将会收缩,当它到达该点

enter image description here

你想要做的事例如执行一些代码

你可以使它成为一个圆圈的工作方式,只是基于数学会是这样一个正方形:

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

+0

哦,非常感谢。那个三角呢?如果三角形将在那里,而不是正方形(大圆圈 - 较小的三角形) – CallMany

+0

那么,这将取决于具体的三角形形状。它是一个等边三角形吗? – Keiwan

+0

是的,那个三角形 – CallMany