我在Unity上有一个项目,在那里我有一个2D空间世界,玩家(宇宙飞船)受到周围行星引力的影响。但我使用的是牛顿引力定律(F=G*((M*m)/r^2)),这个定律的问题是,引力在整个水平上都是活跃的。
所以我使用影响球来获得一个极限,关于重力会在哪里停止影响宇宙飞船,为了做到这一点,我需要知道行星的半径。
问题是,我的行星并不都有相同的大小(或“规模”),但预制的有。因此,相对于原始比例,CircleCollider组件的半径为1.5。无论比例如何,它都保持不变,即使当我手动重新缩放它时,碰撞器在场景视图中也会变大,但值是相同的。
假设我有一个规模为(20,20,20)的Planet1和一个规模为(10,10,10)的Planet2。它们具有不同的比例,但它们的CircleCollider的值为1.5,即使它在场景视图中明显是两倍大。
我到处寻找,但我仍然没有找到一种方法来调整CircleCollider.radius的值以适应地球的大小。我不一定需要得到CircleCollider半径,只需要得到行星半径。
发布于 2017-03-17 19:19:15
所以,据我所知,对撞机在视觉上是正确的大小,所以他们将正常工作,但你试图获得它的值,它返回了某种局部值。所以只要按比例乘以它就行了!
Vector3 scl = gameObject.transform.scale();
float colliderRadius = radius*scl;注意:我没有打开Unity,所以它更像是伪代码。
https://stackoverflow.com/questions/42855694
复制相似问题