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

时间:2017-03-17 10:56:47

标签: c# unity3d physics gravity

我在Unity上有一个项目,我有一个2D太空世界,一个玩家(宇宙飞船)受到周围行星引力的影响。但是我使用牛顿定律来引力(F = G *((M * m)/ r ^ 2)),问题在于引力在整个水平上都是活跃的。 。

因此,我使用影响范围来限制重力停止影响宇宙飞船的位置,并且这样做需要我拥有行星的半径。

问题是我的行星不是都具有相同的尺寸(或者#34;比例"),但预制件可以。所以CircleCollider组件的半径为1.5,指的是原始比例。无论比例如何,它都保持不变,即使我手动重新缩放它,在场景视图中对撞机也会变大,但值是相同的。

所以,让我们说Planet1的规模为(20,20,20),Planet2的规模为(10,10,10)。它们具有不同的比例,但它们的CircleCollider的值为1.5,即使它在场景视图中明显是两倍大。

我到处寻找,我仍然没有找到一种方法将CircleCollider.radius值调整到星球的比例。 我不一定需要获得CircleCollider半径,而只需要行星半径。

1 个答案:

答案 0 :(得分:2)

所以,正如我所理解的那样,碰撞器在视觉上是正确的尺寸,因此它们可以正常工作,但是你试图获得它的价值并且它正在返回某种本地价值。所以只需按比例增加!

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

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