我想知道,如何在物体内部不碰撞。 我有一个大圆圈,圈内是一个较小的正方形。当游戏开始时,该圆圈缩小。 而我想要的是检查碰撞,如果圈子触摸或在广场内。Unity 2D C# - 物体内没有碰撞
你能帮我吗?谢谢
我想知道,如何在物体内部不碰撞。 我有一个大圆圈,圈内是一个较小的正方形。当游戏开始时,该圆圈缩小。 而我想要的是检查碰撞,如果圈子触摸或在广场内。Unity 2D C# - 物体内没有碰撞
你能帮我吗?谢谢
据我所知在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
是三角形的边的长度。
圆和方形都有相同的中心吗?因为如果是这样,你可以使用基本的数学方法,根本不需要任何碰撞检测。 – Keiwan
是的,他们有相同的中心。还有其他的一点,我想提到的是改变gameobject的精灵。圆形可以改变三角形或方形等几何物体 – CallMany
但是它会好的,如果你告诉我如何检测这两个物体的碰撞(方形圆) – CallMany