如何修复我的行星重力脚本?(C#)

如何修复我的行星重力脚本?(C#),c#,unity3d,C#,Unity3d,我的行星重力脚本在执行时什么都不做,我已经测试过了,这是因为rb得到了一些分配给它的东西,力没有被施加,或者是有其他的错误。我对Unity和C相当陌生,所以这个脚本可能有很多可怕的错误。我正试图制作一个以“马里奥星系”为灵感的2D平台,其中包含单个行星的引力。这不完全是我的脚本,我找到了一个适合我需要的脚本,但它是3D的,所以我对它进行了大量修改,将其转换为2D,但它还没有工作。任何帮助都将不胜感激,因为我仍在学习并希望提高 以下是脚本: public class PlanetGravity :

我的行星重力脚本在执行时什么都不做,我已经测试过了,这是因为rb得到了一些分配给它的东西,力没有被施加,或者是有其他的错误。我对Unity和C相当陌生,所以这个脚本可能有很多可怕的错误。我正试图制作一个以“马里奥星系”为灵感的2D平台,其中包含单个行星的引力。这不完全是我的脚本,我找到了一个适合我需要的脚本,但它是3D的,所以我对它进行了大量修改,将其转换为2D,但它还没有工作。任何帮助都将不胜感激,因为我仍在学习并希望提高

以下是脚本:

public class PlanetGravity : MonoBehaviour
{
    public float PullRadius;
    public float GravitationalPull;
    public float MinRadius;
    public float DistanceMultiplier;
    
    public LayerMask LayersToPull;
    
    void FixedUpdate()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, PullRadius, LayersToPull);

        for (var i = 0; i < colliders.Length; i++)
        {
            Rigidbody2D rb = colliders[i].GetComponent<Rigidbody2D>();

            if (rb == null) continue;

            Vector2 direction = transform.position - colliders[i].transform.position;

            if (direction.magnitude < MinRadius) continue;

            float distance = direction.sqrMagnitude * DistanceMultiplier + 1;

            rb.AddForce(direction.normalized * (GravitationalPull / distance) * rb.mass * Time.fixedDeltaTime);
        }
    }
}
公共类飞机重力:单一行为
{
公共浮动半径;
公共浮子重力泵;
公共浮动半径;
公共浮动距离乘数;
公共层屏蔽层填充;
void FixedUpdate()
{
Collider2D[]colliders=Physics2D.OverlappCircleall(transform.position、PullRadius、LayersToPull);
对于(var i=0;i
我把它修好了。在@asawyer和@ChilliPenguin的评论和帮助之后,我所要做的就是为
重力Pull
变量输入一个更大的数字,它就工作了。

我修复了它。在@asawyer和@ChilliPenguin的评论和帮助之后,我所要做的就是为
GravitationalPull
变量输入一个更大的数字,它就工作了。

调试器是否给出了任何错误?您使用的是
rb=null
而不是
rb==null
,调试器会向您发出警报。您需要“修复”问题的帮助,但尚未说明问题所在。Lmao,谢谢@ChilliPenguin,我在控制台中遇到了一个错误,但已修复。即使已修复,但脚本仍然无法工作:(谢谢@asawyer,我已经补充了这一点。再一次“仍然不起作用”没有告诉我们任何事情。我大胆猜测,
return
语句可能需要是
continue
,因为您可能只是提前退出循环。请编辑您的问题,清楚准确地描述预期行为和您观察到的内容。包括任何错误以及所有修复和调试尝试你已经这样做了。调试器是否给出了任何错误?你有
rb=null
而不是
rb==null
,调试器应该会提醒你。你需要帮助“修复”事情,但没有描述错误。Lmao,谢谢@ChilliPenguin,我在控制台中有一个错误,但已经修复了。尽管如此修正了脚本仍然无法运行的问题。:(谢谢@asawyer,我已经添加了它。再次强调“仍然无法运行”没有告诉我们任何事情。我大胆猜测,
return
语句可能需要是
continue
,因为您可能只是提前退出循环。请编辑您的问题,清楚准确地描述预期行为和您观察到的内容。包括任何错误以及所有修复和调试尝试你已经做到了。