Wie erkenne ich Leisten?


18

In meinem Spiel möchte ich, dass mein Charakter in der Lage ist, Vorsprünge zu ergreifen und festzuhalten und sich hochzuziehen, wenn es dafür Platz gibt.

Wie erkenne ich, ob es einen Vorsprung gibt und ob der Charakter genug Platz zum Klettern hat?


Diese Frage wurde als Canon-Version von zwei früheren Fragen erstellt. Siehe die Metadiskussion hier .
Doppelgreener


1
Verknüpfen der Fragen, über die in meta gesprochen wurde: gamedev.stackexchange.com/questions/38066/… und gamedev.stackexchange.com/questions/15491/…
MichaelHouse

Antworten:


22

Das Video zu Overgrowth Alpha 132 zeigt, wie das Simsklettern implementiert wurde.

Ihre Methode sollte in jeder Engine funktionieren, auch in 2D-Engines, bei denen Sie ein Rechteck und einen Kreis anstelle eines Zylinders und einer Kugel verwenden würden.

Ihre Leistenerkennung besteht aus zwei Teilen:

Wanderkennung (mit der Kugel)

Das Spiel prüft, ob der Spieler gerade mit einer Mauer kollidiert. Wenn eine Wand vorhanden ist, kann der Spieler möglicherweise an Leisten greifen. Der zweite Teil übernimmt die Analyse der Leisten.

Leistenerkennung (mit dem Zylinder)

Wenn der Spieler eine Wand berührt, wird ein Zylinder aus einem bestimmten Abstand über der Position des Spielers nach unten geschoben, bis er eine Kante berührt. Dies bestimmt drei Dinge:

  • Gibt an, ob über dem Spieler eine Kante vorhanden ist
  • Die Höhe der Kante
  • Ob der Spieler Platz hat, um auf den Sims zu klettern, wenn man bedenkt, dass der Zylinder den gleichen horizontalen Raum einnimmt wie der Spieler.

Erstaunliche Methode und fantastisches Beispiel +1
Bugster

"Ein Zylinder wird ab einer bestimmten Entfernung über der Position des Spielers nach unten geschwenkt." Welche Entfernung? Dies ist sehr wichtig im Umgang mit Innenräumen (Sie würden die Decke versehentlich schneiden).
Tara

1
@Dudeson In der Vergangenheit habe ich einen Raycast verwendet, um zunächst die Simsoberfläche zu finden, bevor ich eine Lautstärkeregelung durchführte, um sicherzustellen, dass genügend freier Raum zum Klettern vorhanden ist. Da der Raycast direktional ist, werden Decken nicht als False Positives gelesen - obwohl er im nächsten Stockwerk hängen bleiben könnte, wenn der Ursprung viel zu hoch ist Zeichengröße,
Armreichweite

@DMGregory Gute Idee mit dem Raycast!
Tara
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.