2012-04-12 4 views
1

Ich mache ein iPad-Spiel mit cocos2d und box2d.Wie verhindert man Tunneling auf Sensor-Objekte in Box2D

Unter anderem gibt es ein sich schnell bewegendes Spielerobjekt und eine Reihe von statischen Linienobjekten. Ich möchte, dass die Linien erkennen, wenn der Spieler sie überquert, aber nicht wie eine Mauer zum Spielerobjekt oder anderen beweglichen Objekten im Spiel. Ich habe also die Linien als Sensoren eingestellt.

Allerdings scheint der geschickte Anti-Tunnel-Code, den Box2D für die Kollisionserkennung bei sich schnell bewegenden Objekten hat, nicht für Körper zu gelten, die als Sensoren eingestellt sind. Jetzt läuft mein Spielerobjekt direkt durch die Linien und wird nur einmal in fünf erkannt.

Wie bekomme ich box2d, um das Sprite zu erkennen, das jedes Mal die Linie überquert, egal wie schnell es geht?

Edit: Ich fand diesen Beitrag in den box2D Foren, wo jemand ein ähnliches Problem hatte und a possible solution gefunden. Ich folge jedoch nicht der Implementierung der Lösung. Vielleicht hilft es jemand anderem oder vielleicht kann jemand erklären, was diese Person deutlicher gemacht hat. Hier ist, was sie sagten:

+0

Genpfault, warum haben Sie mein "Danke" entfernt? Ist das hier unangebracht? Ich bin neu in stackoverflow, es tut mir leid. –

+1

Nur eine Randnotiz, James. Wenn Sie Ihre Antwort hier nicht finden, würde ich auch empfehlen, Ihre Frage in den Box2D Foren zu posten. Der Entwickler ist dort normalerweise ziemlich aktiv. – user987280

+0

Danke, ich werde :-) –

Antwort

2

OK Ich habe es funktioniert. Jemand hat in den Box2D-Foren mit einer Lösung geantwortet, die eine Raycast-Funktion verwenden soll, anstatt sich auf die integrierte Kollisionserkennung zu verlassen. Ich konnte Anweisungen finden, wie man das macht in this excellent tutorial on RayWenderlich.com

Für meine Zwecke, ich einfach berechnet die Sprite-Geschwindigkeit aus dem letzten Frame, dann führte eine Ray-Cast, um zu sehen, ob es irgendwelche Zeilen überquert. Der Callback gibt die x, y-Koordinate der Kreuzung an.

Verwandte Themen