2012-04-13 6 views
3

Trotz Stunden vor box2d verstehe ich immer noch nicht, wie appliceforce und applyimpulse funktionieren. Ich habe versucht, etwas Visuelles zu verwenden, um besser zu verstehen, was vor sich geht (indem ich Linien zwischen der Körperposition und dem Punkt der Anwendung mache), aber je mehr ich versuche, desto weniger macht es Sinn.box2d forces (applyimpulse und applyforce)

Ich würde gerne applyimpulse verwenden, um meinen box2d Körper in Richtung des Punktes der Anwendung springen zu lassen (die Mauskoordinaten, in diesem Versuch). Es geht irgendwo anders als dem gewünschten Punkt ...

Hier einige meiner Versuche sind bisher:

b.ApplyImpulse(
new b2Vec2(g.mouseX/SCALE,g.mouseY/SCALE), 
new b2Vec2(b.GetPosition().x,b.GetPosition().y)); 

und das Gegenteil

b.ApplyImpulse(
new b2Vec2(b.GetPosition().x,b.GetPosition().y), 
new b2Vec2(g.mouseX/SCALE,g.mouseY/SCALE)); 

beide unvorhersehbare Ergebnisse produzieren, die ich nicht tun verstehe überhaupt.

Könnte bitte jemand erklären ApplyImpulse zu mir, als ob ich 5 Jahre wäre? Wie kann ich die Intensität des Impulses bestimmen? Und die Richtung? Niemand scheint das im Internet zu erklären.

Bitte verzeihen Sie meine schlechte Physik Hintergrund, ich habe auf viele verschiedene Arten versucht und dieses Problem fast mich immer stecken bleiben, wenn ich mit Box2d arbeite.

Vielen Dank im Voraus!

+0

Wie Sie Skala erhalten Sie? – Gabber

Antwort

0

denke ich, das Problem ist die Position der Leinwand sein kann, ersetzen Sie die Mauskoordinaten mit canvas.left zu entfernen und es könnte funktionieren