Das Erkennen von Kollisionen mit rechteckigen Objekten ist recht einfach. Ich kann einfache Spiele auf Kachelbasis schreiben. Jetzt möchte ich lernen, nicht auf Kacheln basierende Spiele zu schreiben, bei denen Objekte möglicherweise nicht rechteckig sind, z. B. ein Berg.
Angenommen, ich möchte ein unebenes Gelände mit Hügeln und Bergen. Wie speichere ich die Form des Geländes? Wie erkenne ich auch die Kollisionen für solche unebenen Objekte?
collision-detection
Cracker
quelle
quelle
Antworten:
Sie können dies auf verschiedene Arten tun:
Eine davon ist die Verwendung eines groben Kollisionstests mit Bounding-Box-Kollision (ähnlich wie bei Ihrer bisherigen Kollision). Wenn dies erfolgreich ist, führen Sie einen Feinkollisionstest mit pixelgenauer Erkennung durch.
Eine andere Möglichkeit besteht darin, Begrenzungsformen zu verwenden, die jedoch nur den Bereich umgeben, in dem Sie kollidieren möchten, z. B. eine Hitbox, und eine Kreuzungserkennung durchzuführen.
quelle
Die Geländeform wird normalerweise als Array gespeichert, die sogenannte "Höhenkarte":
Sie können einige fraktale Details glätten oder erstellen (normalerweise, wenn die Abmessungen des Arrays klein sind).
Führen Sie keine Kollisionen von Hand durch. Möglicherweise treten Probleme mit der Geschwindigkeit, den Durchdringungen ...
Verwenden Sie konvexe Box2D-Polygone für Seitenroller (Scorched Earth). Für Top-Down-Rollenspiele wie ODE, Havok, Newton , Bullet ... scheinen Höhenkarten unterstützt zu werden, manchmal sogar von Haus aus.
quelle