2009-07-09 17 views
2

Ich versuche, ein einfaches 3D-Plattform-Spiel zu machen. Das Problem, das ich habe, ist mit der Kollisionserkennung und -antwort. Ich repräsentiere derzeit meine Spielercharaktere (für Wand- und Bodenkollisionen) mit einer Kugel.Gute Kollisionsdarstellung des Spielercharakters in 3D Platform Game?

Ich verwende eine einfache Schwerkraft und gerichtete Kräfte mit den Pfeiltasten für die Bewegung.

Mein Problem tritt auf, wenn ich an eine Kante komme (wie eine Klippe). Ich gleite über die Kante wie ein Ball, aber das Verhalten, nach dem ich suche, ist, wie ein aufrechter Zylinder vom Rand zu fallen. Ein Boolescher "Ich bin auf der Plattform, oder ich bin nicht auf der Plattform", und nicht "Ich rutsche allmählich von der Kante".

Das Problem bei der Verwendung eines aufrechten Zylinders besteht darin, dass das Heraufgleiten von Treppen automatisch unmöglich wird, und wenn man entlang irgendeiner Neigung fährt, muss sich der Zylinder entweder nur an einer Kante berühren oder teilweise im Hang eingebettet sein.

Was ist eine gute Kollisionsdarstellung des Spielercharakters in einem 3D-Plattformspiel?

Antwort

1

Sie können die Kugel für die Kollisionserkennung behalten.

Und wenn Sie eine Kollision finden, dann sollten Sie genauer auf Kollision berechnen, indem Sie Ihren Charakter in mehrere Komponenten teilen.

Eine gebräuchliche Lösung ist die Kugel (weil die Kollision leicht zu berechnen ist) für den Kopf, den Rumpf und einen Zylinder für die Beine und die Arme (Sie können auch Kugel für die Hände und Füße hinzufügen).

Haben Sie die Möglichkeit this book zu lesen?

1

Probieren Sie ein abgeflachtes Ellipsoid aus. Strecken Sie die Kugel einfach entlang der vertikalen Achse.

0

Es klingt wie Ihre ideale Lösung wäre ein aufrechter Zylinder mit abgerundeten Kanten. Es würde immer noch über gerade Kanten kippen, aber die abgerundeten Kanten würden Ihnen erlauben, die Treppe hinauf zu rutschen. Möglicherweise müssen Sie mit dem Rundungsradius spielen, um den gewünschten Effekt zu erzielen.