Ich versuche, in Farseer eine Bombenexplosion auszulösen. Ich habe einen Kreis für die Bombe erstellt. Wenn die Bombe jedoch explodiert, sollten die Objekte (Körper), die sich um sie herum befinden, wegfliegen, da sie durch die enorme Kraft der Explosion zurückgedrängt werden. Ich bin mir jedoch nicht sicher, wie ich diese Kraft aufbauen soll - wie kann ich das tun?
xna
c#
farseer-physics-engine
Homer Simpson
quelle
quelle
Antworten:
Ich würde empfehlen, die Seite "explosion iforce2d" zu lesen . Es macht einen großartigen Job, wenn man die verschiedenen Arten des Umgangs mit Explosionen mit den Kompromissen zwischen Leistung und Genauigkeit betrachtet. Es geht über 3 Methoden, die ich hier zusammenfassen werde. Das ist also nur eine Zusammenfassung der Informationen, die ich bei der Recherche gefunden habe und keine meiner eigenen Arbeiten.
Auch Sie wollen hier keine Kräfte impulsen. Um zu verstehen , warum lesen diese .
Die Annäherungsmethode
Dies ist die gleiche Methode, die Byte56 in seiner Antwort behandelt. Das Konzept ist einfach. Haben Sie einen Explosionspunkt und wenden Sie einen Impuls in die entgegengesetzte Richtung von dem Punkt weg an, der alle Objekte mit einer Stärke beeinflusst, die von ihrer Entfernung abhängt.
Vorteile:
Nachteile:
Die Raycast-Methode
Dieser ist einfach genug, wirft Strahlen aus dem Ursprung Ihrer Explosion aus und setzt Impulse, wenn sie mit einem von der Entfernung bestimmten Impuls auf ein Objekt prallen.
Vorteile:
Nachteile:
Die Partikelmethode
Mein persönlicher Favorit. Ähnlich wie bei der RaySasting-Methode, aber anstelle von Strahlen setzen Sie die Physik-Engine ein und spucken kleine Pellets aus, die mit Ihrer Szene interagieren.
Vorteile:
Nachteile:
quelle
normalize(object - center)
.(object - center).length
Bezüglich der Berechnung der Größe können Sie mit einem einfachen linearen Abfall beginnen und dann zu anderen Formeln wechseln, wenn Ihnen die Ergebnisse nicht gefallen.
quelle