Angenommen, es ist ein Objekt A, das ist das Zeichen, und ein Objekt B, die den Boden
Angenommen, der Charakter nur ist gehen kann, wenn er den Boden berührt.
Ihr Objekt A Unter der Annahme b2Body Objecta genannt und ObjectB ist ein weiterer b2Body genannt ObjectB und Sie Welt m_world genannt. Wenn objectB die Masse ist, denke ich, dass es eine Dichte von 0 hat, die es statisch macht. Wenn Sie überprüfen möchten, ob objektA über objectB ist, haben Sie zwei Optionen, entweder durch die Körper selbst, dh durch die Verwendung von Box2d-Maßeinheiten (1 Meter = 30 Pixel), , die den Verweis auf Ihre benutzerdefinierten Clips über die userData-Eigenschaft verwenden.
Der Vorteil der Verwendung der zweiten, ich denke, ist, dass Sie die normalen Pixel-Einheiten verwenden werden, ohne zu berücksichtigen, dass Sie Ihren Registrierungspunkt in der Mitte nicht bei 0,0 haben.
Also, in Ihrer Aktualisierungsschleife (wo Sie m_world.Step nennen) würden Sie so etwas wie haben:
if((objectA.m_userData.y + objectA.m_userData.height*.5) < (objectB.m_userData.y-objectB.m_userData.height*.5)) trace('objectA is above ground');
else trace('objectB is on the ground');
Lesen Sie einfach noch einmal Sie kommentieren und aktualisiert.
Ich fing an, einen jsfl-Befehl für Flash zu schreiben, der die x, y, Breite, Höhe von Elementen auf der Bühne erhält und den box2d-Code erzeugte. Ich habe es benutzt, um dieses einfache Spiel zu machen: Es scheint, dass ich das Rad nicht neu erfinden muss, da jemand anderes schon etwas ziemlich Gleichmäßiges gemacht hat. Wir kommen gerade von LFPUG wo Carlos Ulloa ein wenig über box2d auch gesprochen und er auf diese Sache hingewiesen:
http://www.sideroller.com/wck/
Es Arrays für komplexere Form Definitionen zu koordinieren zu erzeugen scheint das ist, was Sie brauchen. In gewisser Weise ist dies nicht die vollständige Antwort auf Ihre spezifische Frage, aber es ist ein Schritt weiter entwickelt.
Aus Ihrer Beschreibung klingt das Spiel wirklich interessant. Halten Sie uns auf dem Laufenden :)
die Objekte in meinem Blitz immer bewegt: p sie einige Lebensform sind, die Aktionen weiterhin tun .. aber ich muss wissen, ob sie auf dem Boden oder nicht. So isSleeping wird nicht in der Bodenerkennung helfen. Vielen Dank für deine Antwort. – Unreality
Ich habe meine Antwort nach Ihrem Kommentar bearbeitet. Hoffe das hilft. –
Box2D nimmt keine Pixeleinheiten an. 1 Einheit! = 30 Pixel! – Zifre