团结 | CircleCollider2D.radius 返回相同的值

Unity | CircleCollider2D.radius returning same value

我有一个关于 Unity 的项目,我有一个二维 space 世界,其中玩家(space飞船)受到周围行星引力的影响。但我使用的是牛顿引力定律 (F=G*((M*m)/r^2)),问题在于引力将在整个关卡中发挥作用。

所以我正在使用影响范围来限制重力将停止影响 space飞船的位置,为此我需要知道行星的半径。

问题是我的行星并非都具有相同的大小(或 "scale"),但预制件却有。因此 CircleCollider 组件的半径为 1.5,参考原始比例。无论比例如何,它都保持不变,即使我手动重新缩放,场景视图中的碰撞器也会随着它变大,但值是相同的。

假设我有一个比例为 (20,20,20) 的 Planet1 和一个比例为 (10,10,10) 的 Planet2。它们具有不同的比例,但它们的 CircleCollider 值为 1.5,尽管它在场景视图中显然是原来的两倍大。

我找遍了所有地方,但仍然没有找到一种方法来调整 CircleCollider.radius 值以适应地球的规模。 我不一定需要获取 CircleCollider 半径,而只需获取 Planet 半径。

所以,据我所知,碰撞器在视觉上是正确的大小,因此它们可以正常工作,但您试图获取它的值并且它正在返回某种本地值。因此,只需将其乘以比例即可!

Vector3 scl = gameObject.transform.scale();
float colliderRadius = radius*scl;

注意:我没有打开Unity所以它更像是伪代码。