Comment détecter les rebords?

18

Dans mon jeu, j'aimerais que mon personnage puisse saisir et tenir les rebords, et pouvoir se relever s'il y a de la place pour le faire.

Comment puis-je détecter s'il y a un rebord et si le personnage a suffisamment d'espace pour grimper?

doppelgreener
la source
Cette question a été créée comme une version canon de deux questions précédentes. Voir la méta discussion ici .
doppelgreener
1
En outre, reliant les questions abordées dans la méta: gamedev.stackexchange.com/questions/38066/… et gamedev.stackexchange.com/questions/15491/…
MichaelHouse

Réponses:

22

La vidéo d' Overgrowth Alpha 132 montre comment ils ont mis en œuvre l'escalade de corniche.

Leur méthode devrait fonctionner dans n'importe quel moteur, même les moteurs 2D où vous utiliseriez un rectangle et un cercle au lieu d'un cylindre et d'une sphère.

Leur détection de rebord comprend deux parties:

Détection de mur (à l'aide de la sphère)

Le jeu vérifie si le joueur entre actuellement en collision avec un mur. S'il y a un mur, il peut y avoir des rebords sur lesquels le joueur peut s'accrocher. La deuxième partie prend le relais pour analyser les corniches.

Détection de rebord (à l'aide du cylindre)

Si le joueur entre en contact avec un mur, un cylindre est balayé vers le bas à partir d'une certaine distance au-dessus de la position du joueur jusqu'à ce qu'il touche un rebord. Cela détermine trois choses:

  • Si un rebord existe au-dessus du joueur
  • La hauteur du rebord
  • S'il y a de la place pour que le joueur monte sur le rebord, étant donné que le cylindre occupe le même espace horizontal que le joueur.
doppelgreener
la source
Méthode incroyable et exemple fantastique +1
Bugster
"un cylindre est balayé vers le bas à partir d'une certaine distance au-dessus de la position du joueur" Quelle distance? Ceci est très important dans les environnements intérieurs (vous couperiez le plafond par accident).
Tara
1
@Dudeson dans le passé, j'ai utilisé un raycast pour trouver initialement la surface du rebord, avant de faire un suivi du volume pour vérifier qu'il y a suffisamment d'espace libre pour grimper. Puisque le raycast est directionnel, il ne lit pas les plafonds comme de faux positifs - bien qu'il puisse toujours être accroché à l'étage suivant si l'origine est beaucoup trop élevée .. Les mesures exactes dépendront de beaucoup de détails de chaque jeu - le taille des caractères, portée des bras, dégagement dans la conception du niveau, vitesses de chute, etc.
DMGregory
@DMGregory Bonne idée avec le lancer de rayons!
Tara