Frage

Ich habe einen sich schnell bewegenden Körper (a), der dynamisch ist. Es soll mit einem anderen Körper (b) kollidieren. A kollidiert mit B, aber manchmal passt es den Körper B ohne Kollision. Dies ist ein völlig zufälliges Verhalten. Ich muss diese Kollision haben. Bitte leiten Sie sich nach dem Zufallsprinzip, warum es sich so verhält.

War es hilfreich?

Lösung

Die Wirkung eines Objekts, das aufgrund einer großen Bewegung in einem einzigen Zeitschritt durch ein anderes geht, wird genannt Tunneling.

Box2d verwendet eine kontinuierliche Kollisionserkennung zwischen Dynamik und statisch Objekte zur Lösung dieses Problems. Ihr Fall (dynamisch vs dynamisch) wird jedoch nicht automatisch behandelt, daher ist es nur ein zufälliger Würfelwurf, ob Ihre Objekte in dem genauen Moment, in dem die Kollisionen bewertet werden, in kollidierenden Positionen befinden.

Von dem Box2d -Handbuch:

Normalerweise wird CCD nicht zwischen dynamischen Körpern verwendet. Dies geschieht, um die Leistung angemessen zu halten. In einigen Spielszenarien benötigen Sie dynamische Körper, um CCD zu verwenden. Zum Beispiel möchten Sie möglicherweise eine Hochgeschwindigkeits -Kugel auf einen Stapel dynamischer Ziegel schießen. Ohne CCD kann die Kugel durch die Ziegel abtunneln.

Schnelle sich bewegende Objekte in Box2d können als Kugeln bezeichnet werden. Kugeln werden CCD sowohl mit statischen als auch mit dynamischen Körpern durchführen. Sie sollten entscheiden, welche Körpers Kugeln basierend auf Ihrem Spieldesign sein sollten. Wenn Sie entscheiden, dass ein Körper als Kugel behandelt werden sollte, verwenden Sie die folgende Einstellung.

bodydef.bullet = true;

Die Kugelflagge betrifft nur dynamische Körper.

Box2d führt eine kontinuierliche Kollision nacheinander aus, sodass Kugeln schnell bewegende Körper verpassen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top