Comment faire en sorte que mon personnage 2D se tienne normalement sur une pente?

13

J'ai ce personnage dans Unity3D (mode 2D) ... dans une pente qui ressemble à ceci, entrez la description de l'image ici

Mais je veux que le personnage se tienne le long de la ligne rouge ... comme ci-dessous entrez la description de l'image ici

Comment puis-je le faire dans Unity3d?

J'ai cette configuration ..

entrez la description de l'image ici

J'utilise Addforce simple pour le mouvement ... Si je supprime la contrainte de position z, il en résulte un mouvement étrange comme le roulement et ainsi de suite .... Toute aide serait appréciée :)

jamius19
la source

Réponses:

27

Avez-vous considéré qu'il semble très étrange qu'une personne se tienne perpendiculairement à une pente?

debout perpendiculairement à une pente

Vous devez être debout pour rester en équilibre.


Quelques alternatives:

  • Traitez ses pieds comme un objet séparé et faites-les pivoter pour être parallèles à la pente. (Un lancer de rayons trouvera l'angle normal , comme décrit dnk . L'angle pour les pieds est de + 90 ° .)

    pieds tournés

  • Faux-le, en déplaçant un peu tout le personnage vers le bas.

    faux pieds "tournés"

Anko
la source
3
merci à tous :) J'ai fait cela après votre suggestion i.imgur.com/io3v7Y4.png
jamius19
1
Cela suggère également que dès que les pieds en rotation ne semblent plus bien, votre personnage devrait trébucher :)
Hagen von Eitzen
: - / La rotation des pieds semble-t-elle étrange sur la photo que j'ai jointe?
jamius19
@ jamius19 Ils ont l'air bien pour moi. Je pense que le commentaire de Hagen était une blague.
Anko
1
Vous n'avez pas besoin de déplacer le personnage vers le bas, il suffit de déplacer un peu le visuel de la pente par rapport au physique
ratchet freak
2

Essayez d'utiliser RaycastHit.normal au sol pour obtenir une situation normale. Les mettre char.up = normal

dnk drone.vs.drones
la source
1
Pourquoi gaspiller le CPU avec un raycast si la physique Unity donne déjà ces informations par défaut à chaque collision?
Kroltan