Chronique Cube³ : Chapitre 3

Après cette session de graphisme sous 3dsmax, je reviens à mes premiers amours avec l’éditeur de déclencheurs. Êtes-vous prêts ? Bien que le moteur de jeu aie été crée, il reste encore énormément de choses à faire. Le prochain but est de recréer le système de déplacement du cube. Actuellement, le cube se déplace automatiquement d’une case. Le but va être de créer un système d’inertie comme sur le jeu EDGE sur iPhone.

Pour réaliser cela, il va falloir passer par des fonctions natives, ce qui nous promets une belle partie de plaisir. Let’s go !

Dans la théorie

Voici comment notre programmation va se séparer :

  • Une structure « Physique » qui va contenir les paramètres du joueur pour la physique : L’orientation du joueur (N, S, O, E) et le degré de rotation que le cube possède.

J’ai dit dans le premier paragraphe que j’allais avoir besoin d’une fonction native. La raison est toute simple, on va utiliser la fonction native d’un message d’acteur pour une rotation, de manière à pouvoir y indiquer des noms de variables, puisque la rotation de notre cube va se réaliser progressivement en fonction de la valeur du degré de rotation que le cube possède. De plus, la physique interviendra de 2 façons :

  1. Si le degré de rotation est trop faible (<45°) alors le cube retombera à 0° progressivement si aucune pression de déplacement n’est exercé dessus.
  2. Si le degré de rotation est trop élevé (>=45°) alors le cube tombera à 90° progressivement si aucune pression de déplacement n’est exercé dessus.

Un peu de Mathématiques

Ô Mathématiques, mon ennemie. Il va falloir trouver grâce aux fonctions ArcSin, ArcCos et ArcTan, la bonne valeur à appliquer pour chaque valeur de la fonction de rotation d’acteur. Pour cela, on va avoir besoin de revoir un peu de mathématiques.

La rotation s’applique selon 2 paramètres. « Avant » permet d’appliquer une rotation semblable à l’angle de direction pour les axes X, Y. L’Axe Z permet quand à lui d’incliner le nez de l’objet vers le haut ou vers le bas, avec une limite de -90° et +90°.

Le paramètre « Haut » permet quand à lui d’appliquer une rotation sur l’autre axe. Appliquer sur X et Y vont faire pivoter l’objet sur le côté, tandis que Z va permettre de pivoter le nez de l’objet sur 360°.

Dans la pratique

On sait maintenant comment faire plier l’angle du cube au fur et à mesure vers une position. La programmation peut donc commencer en ce sens. Cependant, intervient un problème inattendu, il est impossible d’appliquer une rotation pour le paramètre « Haut ». Les fonctions natives le permettant semblent boguées, ce qui rend impossible la création de cette fonctionnalité. J’ai bien essayé de créer un acteur – car la rotation depuis l’éditeur de données fonctionne, elle ! – mais ces rotations ne s’appliquent que lors que les unités sont initialisées. Impossible d’appliquer une rotation « après-coup ».

Cette partie de la programmation est donc écartée. On espère que Blizzard résoudra le problème dans une prochaine mise à jour, pour nous atteler à un autre gros problème, la génération de cartes aléatoires…

Laisser un commentaire