Fliesenphysik mit Farseer


9

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.

Fliesenphysik mit Farseer

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?


Ich frage mich, ob Sie die Kollisionsboxen einfach um ein Pixel erweitern könnten, damit sie sich etwas überlappen. Es kann die Oberfläche vielleicht als verbundener sehen.
Doug.McFarlane

@ Doug: Ich habe das gerade getestet und es hat keinen Unterschied gemacht.
William Mariager

Sind die Bodenfliesen statische Körper?
Bummzack

@ Bummzack: Ja, das sind sie.
William Mariager

Ich habe genau das gleiche Problem. Ich bekomme den "Bouncing" -Effekt, wenn mein bewegliches Objekt ein Rechteck oder ein Kreis ist. Ich kann auch nicht mehrere Quadrate in ein großes Rechteck konvertieren, da ich möchte, dass der Spieler in bestimmten Situationen einzelne Kacheln "entfernen" kann.

Antworten:


5

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.


Ich habe tatsächlich damit begonnen, meine eigene Physik-Engine speziell für diese Kachel-Engine zu codieren, da es anscheinend keine eleganten Lösungen gibt.
William Mariager

Ich habe beschlossen, dies als Antwort zu markieren, da es keine einfache Lösung zu geben scheint und Sie besser dran sind, Ihre eigene Lösung zu codieren. Oder akzeptieren Sie, dass Sie keine andere Physik haben können, und verwenden Sie Marching Squares, um größere Körper herzustellen.
William Mariager

0

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.


1
Wie ich im dritten Absatz sagte, ist es keine Option, eine Gruppe von Objekten in ein größeres Objekt umzuwandeln, da ich einzelne Eigenschaften verlieren würde.
William Mariager

Sie können sie auch nach ihren phisykalen Eigenschaften gruppieren. Ich denke, es ist nicht sehr üblich, viele verschiedene physische Blöcke zusammen zu haben.
Blau

Das Gruppieren nach physischen Eigenschaften würde mir das gleiche Problem bereiten, wenn sich das Gelände auf einer Strecke stark ändert. Es mag ungewöhnlich sein, aber es ist trotzdem das, was ich brauche.
William Mariager

0

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.


Ich habe das getestet. Bei Verwendung eines großen Rechtecks ​​gibt es keine Probleme.
William Mariager

k, Fliesen sind dann das Problem
John McDonald
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.