J'aurais besoin de conseils pour trouver une bonne méthode pour gérer des personnages (dans un jeu, bien sûr). J'ai un personnage, qui contient tout un tas d'informations dont le modèle à afficher quand on veut le dessiner à l'écran, et les animations disponibles pour ce personnage. J'ai également toutes les méthodes nécessaires pour déplacer le personnage (sauter, avancer, reculer, etc), et pour déclancher des animations (quand je dis "déplacer", c'est tout à fait séparé des animations, il s'agit juste de modifications des coordonnées).
J'aimerais avoir un système qui me permette de contrôler les actions mon personnage (soit au clavier, soit au travers d'une fonction qui jouera le rôle d'IA), mais où il y aurait le minimum possible de paramètres codés en dur (j'ai plusieurs modèles, qui n'ont pas les mêmes animations et qui n'auront pas exactement les mêmes comportements, donc si j'écris quelque part "function avancer () { vitesse (10); animation ("marche_avant"); }", ça ne marchera que pour ce modèle là puisque rien ne dit qu'un autre personnage peut marcher également, et encore moins que son animation de marche s'appelle "marche_avant".
Une autre contrainte est que toutes les actions ne sont pas déclanchables n'importe quand, et certaines ont la priorité sur d'autres (si on se prend un coup, l'action "se prendre un coup" qui fait reculer le perso et joue une animation où il vacille doit interrompre quasiment toutes les autres quand elle se déclanche). Certaines animations ont également la priorité, sans pour autant interdire aux autres de fonctionner (si on tourne sur soi-même, une animation spéciale est jouée; si on cours, une animation de course est jouée, si on tourne et qu'on cours, ça marche, mais seule l'animation de course est jouée).
Enfin, quand des actions sont compatibles, elles peuvent très bien déclancher des animations sur des parties séparées du personnage (il peut par exemple courir et donner un coup d'épée, la 1ere animation utilisant les jambes et la 2eme les bras, ça ne pose pas de problème).
Toutes mes tentatives pour le moment se sont résumées à :
- Beaucoup trop de code en dur, donc obligé de faire plein de fichiers pour les différents personnages
- Un code très lourd à cause de tous les cas particuliers
Quelqun aurait déjà pensé à des solutions efficaces à ce genre de problème ? Merci
