Bon, je vais répondre un peu à retardement, mais j'ai regardé un peu ce script car il m'intéresse, notamment en raison de sa simplicité pour les novices.
Je vais essayer d'apporter une réponse aux différents problèmes posés au fur et à mesure.
En ce qui concerne le passage à travers les chipsets, je n'ai pas ce souci. Est ce que tu pourrais, Zephino, tester sur un projet vierge et me dire exactement avec quel chipset tu as ce souci ?
Vis à vis du déplacement en crabe, il va falloir utiliser un charset à 8 directions. Cela implique non seulement de le créer, mais aussi de rajouter un morceau de script pour que rmxp aille chercher la bonne animation sur le charset, je regarderai à l'occasion.
Enfin, pour le déplacement en diagonale, l'idée est simple : imaginez que votre map est un grand quadrillage :
- vous montez ou descendez, vous vous déplacez d'une case vers le haut ou le bas et parcourez la distance H (comme hauteur case )
- vous allez à gauche ou à droite, vous vous déplacez d'une case vers la gauche ou la droite et parcourez une distance L (comme largeur case, rien de nouveau, et en plus, si c'est un carré, H=L, enfantin.)
- le souci avec un déplacement en diagonale : la longueur de la diagonale d'un carré n'a jamais été égale à sa hauteur ou sa largeur, mais à H*racine (2) (ou L*racine(2), c'est pareil).
Quand vous faites un mouvement en diagonale, le personnage se déplace donc de H*racine(2) ce qui, pour ceux qui ont une calculatrice sous la main, est...plus grand que H...d'où l'impression que le personnage va plus vite en se déplaçant en diagonale, ce qui n'est pas faux.
(Pour ceux que ça intéresse, racine(2) = 1,41...le personnage parcourt environ 1,5 fois la largeur ou la hauteur du carreau dans le même laps de temps ; il se déplace donc effectivement plus vite.)
L'idéal pour résoudre ce problème, ce serait de pouvoir déplacer un personnage d'une fraction de carreau, et non pas d'un carreau entier. (En l'occurrence ici 1/racine(2) carreau soit environ 0,7 et cela suffirait à tromper notre œil).
Malheureusement, les variables de position que sont @x et @y qui indiquent la position horizontale et verticale du joueur ne prennent que des entiers.
(Pour ceux que ça intéresse, c'est le script game_character 3 qui m'a permis cette constatation.)
Il existe bien une alternative, mais elle serait très lourde, puisqu'elle consisterait en un nouveau découpage des cases en pixels, et un mouvement fonction des pixels et non plus des cases, et on s'éloigne alors du but principal, qui était d'avoir un script simple.
(A nouveau pour les intéressés, je vous renvoie là => http://www.rpg-maker.fr/index.php?page=scripts&id=63 par contre je n'ai pas testé le script en question.)
|