Mi solución sería tratar cada entidad física en el mapa del juego como un nodo de árbol , y el mapa en sí como el nodo raíz . Los nodos pueden contener otros nodos. Cada nodo está contenido (directa o indirectamente) dentro del nodo del mapa.
Por ejemplo, digamos que tu personaje está parado en una plataforma. El nodo de la plataforma contiene el nodo del personaje. Entonces, cada vez que la plataforma se mueve, los nodos que contiene (en este caso el personaje) también se moverán.
Para que esto suceda, cada nodo debe tener una posición (x, y) relativa al nodo padre . Por ejemplo, tu personaje podría estar ubicado en (1,0) en relación con la plataforma, que a su vez podría estar ubicado en (10,10) en relación con el mapa del juego. De esa manera, si la plataforma se mueve, tu personaje se moverá implícitamente.
En este árbol jerárquico, la posición de cada nodo es igual a la suma de su posición más las posiciones de cada uno de sus nodos principales. Digamos que queremos obtener la posición del personaje en el mapa. Calculamos:
(posición del personaje) + (posición del nodo principal) + (posición del nodo raíz) = (1,0) + (10,10) + (0,0) = (11,0)
OK, todo este tiempo tu personaje ha estado parado en la plataforma. ¿Qué hay de saltar? Bueno, en el momento en que salta, lo separas de la plataforma y lo unes al nodo que contiene la plataforma ; en este caso, el mapa (nodo raíz).
Cuando aterrice de nuevo, conéctelo al nodo en el que aterrizó.