Ich erstelle einen 2D-Side-Scrolling-Shooter und habe ein kleines Problem mit der Kollisionserkennung für die Kugeln. Alles, einschließlich der Aufzählungszeichen, sind Objekte mit eigenen Polygonen / Aktualisierungsmethoden.
Das Problem ist, dass die Kugeln schnell verlaufen und bei 60 Bildern pro Sekunde (mit der das Spiel ausgeführt wird) eine Kugel oft direkt durch eine Wand springt - da sie sich während des Aktualisierungsintervalls mehr als die Breite der Wand bewegt - und mache glücklich weiter, denn die Polygone werden sich nie wirklich überlappen.
Was kann ich dagegen tun? Das Einzige, was mir eingefallen ist, ist, eine Linie von der alten Position zur neuen Position zu ziehen und eine Kollisionserkennung durchzuführen. Die slick2d-Dokumentation empfiehlt jedoch, eine Linie zur Kollisionserkennung zu zeichnen. Wie kann ich das lösen?
Antworten:
Die Standardansätze sind (bitte auswählen):
In diesem Fall können Sie Ihre Kugeln stattdessen als Strahlen modellieren - wenn dies zum Look & Feel Ihres Spiels passt, wie in left4kdead . Auf diese Weise müssen Sie Kugeln nicht als Strahlen approximieren, da es sich bereits um Strahlen handelt. Unter dem Gesichtspunkt des Aussehens kann dies anständig aussehen, wenn Sie die Linie mit einem helleren Punkt am Kugelende zeichnen oder die Linie einfach als Verlauf von hell (Kugelende) nach dunkel (Heckende) zeichnen und ihr das Aussehen von geben Bewegung.
Ich würde zustimmen, dass die Verwendung von Grafiken für die Kollisionserkennung unter den meisten Umständen ein wenig irreführend ist, jedoch ist die pixelgenaue Kollisionserkennung genau das und eine akzeptierte Technik. Ich denke, alles hängt davon ab, was Sie erreichen möchten und wie schnell. Wenn du kein sehr schnelles Spiel mit vielen Körpern + Action brauchst, dann mach es. Anderenfalls ist es besser, einen der oben beschriebenen Ansätze zu verwenden.
quelle
Wenn Sie möchten, dass sich Ihre Kugeln wie realistische physische Objekte verhalten (z. B. sind Ihre Kugeln eher wie Pfeile oder Steine eines Katapults als wie Schüsse), können Sie auch versuchen, die Häufigkeit Ihrer physischen Aktualisierungen zu erhöhen.
Während Ihr Spiel möglicherweise mit 60 Bildern pro Sekunde läuft, könnte Ihre Physiksimulation mit 120 Aktualisierungen pro Sekunde laufen (hier ist der allgegenwärtige Fix Ihres Timestep- Artikels, der ein gutes Physik-Setup erklärt, das mit einer anderen Geschwindigkeit als die Render-Schleife laufen kann).
Wenn Sie das Update-Intervall für die Physik-Engine erhöhen, wird die CPU natürlich stärker belastet. Dieser Ansatz ist nur sinnvoll, wenn sich Ihre Projektile nicht sehr schnell bewegen (was ich angenommen habe, da Sie feststellen können, dass sich Ihre Projektile im Bogen bewegen).
quelle