Box2d: Maximal mögliche Lineargeschwindigkeit?

Ich denke, ich habe Box2d so konfiguriert, dass es für jeden Körper eine Art Maximalgeschwindigkeit gibt, aber ich bin mir nicht sicher. Ich wende einen Impuls wie(100000000, 100000000), und der Körper bewegt sich genauso schnell wie(100, 100) - was gar nicht so schnell ist.

Ich verwende den Box2d XNA C # -Port.

Mein Spiel ist ein Top-Down-2D.

Hier ist ein Code, der relevant sein kann:

private readonly Vector2 GRAVITY = new Vector2(0, 0);

    public void initializePhysics(ContactReporter contactReporter)
    {
        world = new World(GRAVITY, true);
        IContactListener contactListener = contactReporter;
        world.ContactListener = contactListener;
    }

    public void Update(GameTime gameTime)
        {
     // ...

            worldState.PhysicsWorld.Step((float)gameTime.ElapsedGameTime.TotalSeconds, 10, 10);

     //...
        }

Hier ist ein Beispielcode, der den Impuls anwendet:

    private void ApplyImpulseFromInput()
    {
        Vector2 movementImpulse = new Vector2();

        if (inputReader.ControlActivation(ActionInputType.MOVE_LEFT) == 1f)
        {
            movementImpulse.X = -Constants.PLAYER_IMPULSE_CONSTANT;
        } else if (inputReader.ControlActivation(ActionInputType.MOVE_RIGHT) == 1f)
        {
            movementImpulse.X = Constants.PLAYER_IMPULSE_CONSTANT; ;
        }

        if (inputReader.ControlActivation(ActionInputType.MOVE_UP) == 1f)
        {
            movementImpulse.Y = -Constants.PLAYER_IMPULSE_CONSTANT; ;
        } else if (inputReader.ControlActivation(ActionInputType.MOVE_DOWN) == 1f)
        {
            movementImpulse.Y = Constants.PLAYER_IMPULSE_CONSTANT; ;
        }

        model.Body.ApplyImpulse(movementImpulse, model.Position);
    }

ObConstants.PLAYER_IMPULSE_CONSTANT ist irgendwo von1000f zu1000000000f, der Spieler kann sich höchstens bewegen(-120, -120) zu(120, 120). Wenn die Konstante kleiner ist, wie1f, der Spieler bewegt sich langsamer.

Dieser Code wird verwendet, um die Physik für alles in der Spielwelt einzurichten:

        controller.Model.BodyDef = new BodyDef();
        controller.Model.BodyDef.type = controller.Model.Mobile ? BodyType.Dynamic : BodyType.Static;
        controller.Model.Body = worldState.PhysicsWorld.CreateBody(controller.Model.BodyDef);
        controller.Model.Body.SetLinearDamping(10.0f);

Kann es evtl. an der linearen Dämpfung liegen? Ich habe es geändert von10.0f zu0, ohne Wirkung.

AKTUALISIEREN Seltsamkeit mit linearer Dämpfung: Ich habe diese Beobachtungen an dem Körper gemacht, der mit der oben beschriebenen Impulsmethode bewegt wird:

Linear Damping       Max Speed
0f                   120
10f                  120
50f                  120
55f                  90
60f                  0
70f                  0
100f                 0
100000f              0

Warum gibt es einen Empfindlichkeitsbereich bei der linearen Dämpfung zwischen50f und60f?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage