Ma solution serait de traiter chaque entité physique dans la carte de jeu comme un nœud d'arbre et la carte elle-même comme nœud racine . Les nœuds peuvent contenir d'autres nœuds. Chaque nœud est contenu (directement ou indirectement) à l'intérieur du nœud de carte.
Par exemple, supposons que votre personnage se trouve sur une plate-forme. Le nœud de la plateforme contient le nœud du personnage. Ainsi, chaque fois que la plate-forme se déplace, les nœuds qu'elle contient (dans ce cas, le personnage) se déplacent également.
Pour cela, chaque nœud doit avoir une position (x, y) par rapport au nœud parent . Par exemple, votre personnage pourrait être situé à (1,0) par rapport à la plate-forme, qui lui-même pourrait être situé à (10,10) par rapport à la carte du jeu. De cette façon, si la plate-forme se déplace, votre personnage avancera implicitement.
Dans cet arbre hiérarchique, la position de chaque nœud est égale à la somme de sa position plus chacune des positions de ses nœuds parents. Disons que nous voulons obtenir la position du personnage sur la carte. Nous calculons:
(position du caractère) + (position du nœud parent) + (position du nœud racine) = (1,0) + (10,10) + (0,0) = (11,0)
OK, donc pendant tout ce temps, votre personnage s'est tenu sur la plate-forme. Et le saut? Eh bien, au moment où il saute, vous le détachez de la plate-forme et l' attachez au nœud contenant la plate-forme ; dans ce cas, la carte (nœud racine).
Lorsqu'il atterrit à nouveau, attachez-le au nœud sur lequel il a atterri.