Ich habe ein Problem mit der Farseer Physics Engine, bei der mein Objekt in einer gekachelten Umgebung manchmal mit Ecken anderer Objekte interagiert, selbst wenn diese perfekt ausgerichtet sind.
Ich habe über Leute gelesen, die vorschlagen, dass Sie ein größeres Objekt mit Marching Squares oder ähnlichem berechnen und erstellen. Dies ist jedoch keine Option, da ich möchte, dass jede Fliese unterschiedliche physikalische Eigenschaften aufweist, z. B. unterschiedliche Reibung und Rückerstattung.
Meine Frage ist, was genau es verursacht, sind es Probleme mit der Schwebegenauigkeit oder etwas anderes? Und gibt es eine Möglichkeit, das Problem zu beheben, ohne die gesamte Physik-Engine zu beschädigen?
xna
physics
farseer-physics-engine
William Mariager
quelle
quelle
Antworten:
Farseer verwendet einen iterativen Löser. Wenn Ihr Rad also mit hoher Geschwindigkeit mit einem anderen Rechteck kollidiert, werden Sie von Zeit zu Zeit Unebenheiten sehen, da es für uns eine "perfekte Ausrichtung" ist, nicht für eine Physiksimulation, mit Iterationen wie diesen Sei niemals "pixelgenau".
Sie müssen Rechtecke in Kanten- / Schleifenformen konvertieren und dann verschiedene physische Qualitäten mit Hacks modellieren, z. B. künstliche Kachelgrenzen erstellen und dann die Eigenschaften ändern, wenn Zeichen in einen Begrenzungsrahmen eintreten. Auf diese Weise kann jedoch nicht jede physische Qualität emuliert werden.
Früher oder später werden Sie Ihre eigene kachelbasierte Physik anstelle von Farseer schreiben. Wenn Ihr Spiel nicht viele komplexe Physik-Rätsel enthält, ist es einfacher, Farseer vollständig aufzugeben und Ihre eigene kachelbasierte Physik zu würfeln.
quelle
Sie können Ihre Kollisionsformen optimieren. Diese Szene kann mit nur vier Rechtecken erstellt werden.
Sie können korrelative Felder verbinden, um eines größer zu machen.
Dieses Video zeigt es http://www.youtube.com/watch?v=eyhGckHgkkE
Wenn Sie Kästchen hinzufügen, sehen Sie ein hellblaues Rechteck mit der optimierten Form.
quelle
Hmm ... Ich vermute, es könnte etwas mit Ihrem Kreis zu tun haben und nicht mit den Kacheln darunter. Versuchen Sie, den Boden mit einem einzigen Rumpf zu machen, und prüfen Sie, ob Sie die gleichen Ergebnisse erzielen. Wenn nicht, sind es die Kacheln, wie Sie vermuten. Wenn ja, ist Ihr Kreis nicht so rund, wie Sie vielleicht denken.
quelle