Minha solução seria tratar todas as entidades físicas no mapa do jogo como um nó de árvore e o próprio mapa como o nó raiz . Nós podem conter outros nós. Cada nó está contido (direta ou indiretamente) dentro do nó do mapa.
Por exemplo, digamos que seu personagem esteja em uma plataforma. O nó da plataforma contém o nó do personagem. Portanto, sempre que a plataforma se mover, os nós que ela contém (nesse caso, o personagem) também se moverão.
Para que isso aconteça, todo nó deve ter uma posição (x, y) em relação ao nó pai . Por exemplo, seu personagem pode estar localizado em (1,0) em relação à plataforma, que em si pode estar em (10,10) em relação ao mapa do jogo. Dessa forma, se a plataforma se mover, seu personagem se moverá implicitamente.
Nesta árvore hierárquica, a posição de cada nó é igual à soma de sua posição mais as posições de cada nó pai. Digamos que queremos obter a posição do personagem no mapa. Calculamos:
(posição do personagem) + (posição do nó pai) + (posição do nó raiz) = (1,0) + (10,10) + (0,0) = (11,0)
OK, então todo esse tempo seu personagem esteve na plataforma. Que tal pular? Bem, no momento em que ele pula, você o desconecta da plataforma e o anexa ao nó que contém a plataforma ; nesse caso, o mapa (nó raiz).
Quando ele pousar novamente, conecte-o a qualquer nó em que ele pousar.