Ich mache einen 2D-Shooter ala Geometry Wars. Ich habe meine eigene einfache Physik bei der Arbeit, die das Hintergrundraster und alle meine Entitäten steuert. Um irgendetwas auf der Welt zu bewegen, wende ich eine Vector2d-Kraft darauf an. Der 'Motor' berechnet die resultierende Beschleunigung und damit die Geschwindigkeit.
Ich versuche, einen Code zu portieren, den ich gefunden habe und der den klassischen 'Boids'-Beflockungsalgorithmus implementiert, aber der Code, den ich habe, berechnet die Geschwindigkeiten der Boids direkt. Wenn ich ihn so verwende, wie er ist, umgeht er meine Physik-Engine. Wie ich die Geschwindigkeitsvektoren in Kraftvektoren übersetzen kann, die ich auf die Boids anwenden kann und die über meine Physik-Engine zu den richtigen Geschwindigkeiten führen.
Antworten:
Es hängt davon ab, wie Ihre Physik-Engine funktioniert, aber Sie können wahrscheinlich Newtons zweites Gesetz verwenden :
Wo
m
ist die Masse des Objekts unda
ist seine Beschleunigung (ein Vektor). Die Beschleunigung ist diedv/dt
Ableitung, die durch Teilen der Geschwindigkeitsänderung durch den Zeitschritt angenähert werden kann:Dies funktioniert natürlich nur dann zuverlässig, wenn nur die Kraft, die Sie anwenden, die Entität betrifft. Andernfalls können numerische Ungenauigkeiten auftreten.
quelle