Wie kann ich Kollisionen zwischen Spieler und Projektil in Box2D vorhersagen?

8

Ich mache ein Echtzeit-Shooter-Spiel mit Box2D als Physik-Engine. Im Gameplay geht es hauptsächlich um Flugbahn, wie bei Angry Birds. Ich möchte einen Zeitlupeneffekt machen und die Kamera zum Spieler bewegen, wenn er getötet wird, aber der Effekt sollte beginnen, wenn der Stein noch in der Luft ist, bevor die Kollision tatsächlich passiert.

Die Größe des Schadens wird nur bei einer Kollision basierend auf dem Impuls berechnet. Da es sich um ein Echtzeitspiel handelt, muss der Spieler in der Lage sein, den physischen Körper seines Charakters ohne Verzögerung zu bewegen.

Wie kann ich ihren Tod vorhersagen? Ist es überhaupt möglich? Ich könnte raycasten, aber was ist, wenn sich ein anderes Objekt bewegt, um seinen Weg zu blockieren?

Geben Sie hier die Bildbeschreibung ein

Arch1tect
quelle
1
Theoretische Anmerkung: Die Zukunft nicht deterministischer Systeme ist per Definition unvorhersehbar. Siehe Schrödingers Katze , die "Katze" mental durch "Spielercharakter" ersetzt.
Anko
1
@ Anko sehr interessante Idee! Das habe ich noch nie versucht. Aber der Spieler kann sich immer noch bewegen, so dass es nicht vorhersehbar ist, wohin er geht oder wie weit er geht. Ich kenne jedoch die Bewegungsgeschwindigkeit des Spielers. Wenn der Stein nah genug ist, weiß ich, dass er nicht fehlen wird ...
Arch1tect
1
(1/2) IMO wäre es viel interessanter, wenn Sie einen Raycast verwenden würden, um zu sehen, ob eine Kollision mit einer angemessenen Wahrscheinlichkeit auftritt, dann den Kamera-Zoom starten und das Spiel verlangsamen. Wiederholen Sie für jeden Frame den Strahlwurf, um festzustellen, ob sich der Stein noch auf einem Kollisionskurs befindet. Wenn der Stein abgefangen wird, sollte die Kamera nur in den normalen Zustand zurückzoomen, aber für jedes Bild, bei dem die Kollision wahrscheinlich ist, zoomen Sie die Kamera etwas weiter.
NauticalMile
1
(2/2) Dies wird zwei Fliegen mit einer Klappe schlagen (Wortspiel nicht beabsichtigt): Sie müssen nicht in die Zukunft schauen, und die Spieler werden den Nervenkitzel von Beinaheunfällen sowie direkt erleben (oder grasende) Treffer. Tatsächlich könnte ich argumentieren, dass Ihre Effekte langweilig werden, wenn der Spieler weiß, dass er jedes Mal, wenn die Kamera zoomt und das Spiel langsamer wird, zum Scheitern verurteilt ist. Er wird die 'Animation' sofort überspringen und es erneut versuchen wollen. Aber wenn es eine Chance gibt, dass er dem Stein ausweichen kann, kann man wetten, dass er sich auf die Nägel beißt und darauf wartet, das Ergebnis zu sehen.
NauticalMile
1
(1/2) @NauticalMile hey, das ist auch eine sehr gute Idee !! Ich befürchte, dass dies nicht direkt auf mein Spiel zutrifft, da der Spieler zu oft getroffen wird. Daher kann das Heranzoomen und die Zeitlupe das laufende Spiel zu sehr unterbrechen.
Arch1tect

Antworten:

2

Warum die Flugbahn für die Geräusche / Verlangsamungseffekte berechnen?

Wenn Sie den Vorgang des Verlangsamens der Kamera und des Abspielens von Effekten bei Annäherung an Ihr matschiges Opfer in Abschnitte aufteilen, können Sie diese im Wesentlichen unter der Bedingung ihrer Nähe spielen.

Dies ist ein großartiges Beispiel, das mir in den Sinn kommt. Die Nähe verlangsamt die in Peggle verwendeten Effekte

Der Ball nähert sich dem Stift und wird langsamer. Dies basiert tatsächlich vollständig auf der Nähe, ohne Flugbahn. Wenn es nahe genug an den letzten Zapfen kommt, startet es einen Trommelwirbel und verlangsamt das Spiel. Wenn es den Zapfen nicht trifft und außerhalb der Reichweite liegt, hören Sie "Awww .. :(" und alles kehrt zum Normalzustand zurück, aber Wenn es kollidiert, erhalten Sie die vollwertige Ouvertüre und den Gewinnbildschirm.

Dies ist eine großartige Technik, wenn Sie es gutheißen, Ihren Spieler dazu zu bringen, "Heilige Kuh, ich wurde fast getroffen!" Zu sagen. Wenn Sie einen Startsound / -effekt für eine Todeskamera haben, der vor dem Aufprall abgespielt wird, lösen Sie diesen einfach aus, wenn der Stein nahe genug ist, dass selbst wenn sich der Spieler mit maximaler Geschwindigkeit in eine beliebige Richtung bewegt, eine große Veränderung beim Quetschen auftritt .

Angenommen, Ihr Stein fällt und Sie möchten den Verlangsamungseffekt in einem Abstand von ca. 4 m vom Player starten: Sie lösen zunächst eine Verlangsamung aus, bewegen Ihre Kamera und konzentrieren sich auf den Player - wenn der Stein dann von anderen Trümmern unterbrochen wird Verlassen Sie einfach den Verlangsamungsfokus und Ihr Player fährt wie gewohnt fort.

Geben Sie hier die Bildbeschreibung ein

Dies ist im Wesentlichen die Art und Weise, wie Peggle mit dem Verlangsamungseffekt umgeht und die Musik des Endspiels auslöst.

Tom 'Blue' Piddock
quelle