Je fais un jeu isométrique. Lorsque le joueur essaie de marcher en diagonale dans un mur, je veux qu'il glisse doucement dessus, donc toute portion du mouvement qui est légale est utilisée, et tout ce qui est dans le sens de la normale est jeté. Les murs peuvent avoir n'importe quel angle, pas seulement vertical ou horizontal, et le joueur a un mouvement à 360 °.
J'ai l'impression d'être presque là mais je ne peux pas mettre la dernière pièce en place.
Mise à jour: bonnes nouvelles à tous! Je le fais fonctionner. Mais ... je suis un peu confus ce que je devrais normaliser et ce qui ne l'est pas. La normale doit juste être un vecteur unitaire, non? mais ensuite je mélange ça avec mon entrée donc je normalise ça - je me trompe?
Soit dit en passant, j'ai également constaté que je dois pousser le lecteur de 1 pixel dans la direction de la normale, afin qu'il ne reste pas coincé sur les choses - fonctionne bien.
la source
desiredMotion
résultats vraiment étranges . Avez-vous déjà réussi à le faire fonctionner?Bien qu'il soit simple de supprimer simplement la composante du mouvement qui est dans le sens de la normale, il peut convenir à votre gameplay de faire pivoter le vecteur de mouvement à la place. Par exemple, dans un jeu d'action à la troisième personne, il peut être facile de se raccrocher légèrement aux murs et aux autres limites, vous pouvez donc deviner ce que le joueur a l'intention de faire.
la source