刚性body强制分配'Player'尝试无效。输入力为 { NaN, NaN, NaN }。UnityEngine.Rigidbody:AddForce(Vector3)



我正在做一个关于行星的游戏,所以我决定为我的行星添加重力。我一直在YouTube上关注一个视频,其中一个人一直在指导我完成整个过程。该脚本适用于简单的球体/行星,但它不适用于我的播放器,然后我收到错误 "刚性身体强制分配'玩家'的尝试无效。输入力为{ NaN, NaN, NaN }.UnityEngine.Rigidbody:AddForce(Vector3)"

播放器确实附加了一个移动脚本。

好吧,这是我的脚本

public class Attractor : MonoBehaviour
{
public Rigidbody rb;
private void FixedUpdate()
{
Attractor[] attractors = FindObjectsOfType<Attractor>();
foreach (Attractor attractor in attractors)
{
if(attractor != this)
Attract(attractor);
}
}
void Attract (Attractor objToAttract)
{
Rigidbody rbToAttract = objToAttract.rb;
Vector3 direction = rb.position - rbToAttract.position;
float distance = direction.magnitude;
float forceMagnitude = (rb.mass * rbToAttract.mass) / Mathf.Pow(distance, 2);
Vector3 force = direction.normalized * forceMagnitude;
rbToAttract.AddForce(force);
}
}

我认为巨大的距离将你的力量大小除以一个太小的数字。

如果距离太大,我建议跳过吸引过程。 或者,您可以尝试将距离固定为最大值和最小值。

干杯。

最新更新