Ich denke, dass ich Box2d so konfiguriert habe, dass es für jeden Körper eine maximale Geschwindigkeit hat, aber ich bin mir nicht sicher. Ich wende einen Impuls wie (100000000, 100000000)
an 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 eine top-down 2d.
Hier ist ein Code, der relevant sein kann:
%Vor%Hier ist ein Beispielcode, der den Impuls anwendet:
%Vor% Wenn Constants.PLAYER_IMPULSE_CONSTANT
irgendwo von 1000f
bis 1000000000f
ist, kann der Spieler höchstens (-120, -120)
nach (120, 120)
bewegen. Wenn die Konstante kleiner ist, wie 1f
, bewegt sich der Spieler langsamer.
Dieser Code wird verwendet, um die Physik für alles in der Spielwelt einzurichten:
%Vor% Könnte es möglicherweise die lineare Dämpfung sein? Ich habe es von 10.0f
auf 0
ohne Auswirkung geändert.
UPDATE: Seltsamkeit mit linearer Dämpfung: Ich habe diese Beobachtungen an dem Körper gemacht, der mit der obigen Methode "Anwenden" bewegt wurde:
%Vor% Warum gibt es einen Empfindlichkeitsbereich in der linearen Dämpfung zwischen 50f
und 60f
?
Ich habe das gleiche Problem mit Version 2.1a Ich habe herausgefunden, dass das Ändern der Zeile 128 in b2Settings.as helfen kann. Ändern Sie die statische öffentliche const b2_maxTranslation: Number = 2.0 zu einer höheren Zahl. sicher, dass dies nicht der richtige Weg ist, aber im Moment nicht wirklich wissen, wie es richtig geht.
Das ist nicht der richtige Weg, um dieses Problem zu lösen. Sie sollten Ihre Objekte verkleinern, wenn Sie sie in der box2D-Welt erstellen. Dann können Sie einfach die Informationen skalieren, die box2D Ihnen zurück zur Größe Ihrer Welt gibt.
Sagen wir zum Beispiel, dass eine Box in meiner Welt 120 Pixel lang ist. Wenn ich das Objekt um das 30-fache verkleinere, so dass es von box2d korrekt simuliert werden kann, dann wäre die Länge meiner Box in der box2D-Welt 4 "Pixel" lang (120/30 oder Größe Ihres Objekts / Maßstabs). Nehmen wir an, dass box2D berechnet, dass meine Box 3 "Pixel" in der box2d Welt verschoben hat. Ich könnte dann diese Information greifen und sie auf meine Weltgröße skalieren, was bedeuten würde, dass die Box nur um 90 Pixel (3 * 30) verschoben wurde. Ich hoffe, das klang nicht zu verwirrend. Normalerweise fällt es mir schwer, mich zu erklären.