Solusi saya adalah memperlakukan setiap entitas fisik di peta permainan sebagai simpul pohon , dan peta itu sendiri sebagai simpul akar . Node dapat berisi node lain. Setiap node terkandung (langsung atau tidak langsung) di dalam node peta.
Misalnya, katakanlah karakter Anda berdiri di atas platform. Node platform berisi node karakter. Jadi, setiap kali platform bergerak, node yang dikandungnya (dalam hal ini karakter) akan bergerak juga.
Agar ini terjadi, setiap node harus memiliki posisi (x, y) relatif terhadap node induk . Misalnya, karakter Anda dapat berada di (1,0) relatif terhadap platform, yang itu sendiri dapat berada di (10,10) relatif terhadap peta game. Dengan begitu, jika platform bergerak, karakter Anda akan bergerak bersama secara implisit.
Dalam hierarki pohon ini, posisi setiap simpul sama dengan jumlah posisinya ditambah setiap posisi simpul orang tuanya. Katakanlah kita ingin mendapatkan posisi karakter di peta. Kami menghitung:
(posisi karakter) + (posisi simpul orangtua) + (posisi simpul akar) = (1,0) + (10,10) + (0,0) = (11,0)
OK, jadi selama ini karakter Anda telah berdiri di platform. Bagaimana dengan melompat? Nah, saat dia melompat, Anda melepaskannya dari platform dan melampirkannya ke node yang berisi platform ; dalam hal ini, peta (node root).
Ketika dia mendarat lagi, lekatkan dia ke simpul mana pun dia mendarat.