ทางออกของฉันคือการปฏิบัติต่อทุกหน่วยงานทางกายภาพในแผนที่เกมเป็นโหนดต้นไม้และแผนที่ตัวเองเป็นโหนดรูต โหนดสามารถมีโหนดอื่น ๆ ทุกโหนดมีอยู่ (โดยตรงหรือโดยอ้อม) ภายในโหนดแผนที่
ตัวอย่างเช่นสมมติว่าตัวละครของคุณยืนอยู่บนแพลตฟอร์ม โหนดของแพลตฟอร์มประกอบด้วยโหนดของตัวละคร ดังนั้นเมื่อใดก็ตามที่แพลตฟอร์มย้ายโหนดที่มี (ในกรณีนี้ตัวละคร) จะย้ายเกินไป
เรื่องแบบนี้จะเกิดขึ้นทุกโหนดควรมี (x, y) ตำแหน่งเทียบกับโหนดแม่ ตัวอย่างเช่นตัวละครของคุณอาจอยู่ที่ (1,0) ซึ่งสัมพันธ์กับแพลตฟอร์มซึ่งอาจอยู่ที่ (10,10) เทียบกับแผนที่เกม ด้วยวิธีนี้หากแพลตฟอร์มเคลื่อนไหวตัวละครของคุณจะเคลื่อนไหวไปโดยปริยาย
ในแผนผังลำดับชั้นนี้ตำแหน่งของทุกโหนดจะเท่ากับผลรวมของตำแหน่งของเขาบวกกับแต่ละตำแหน่งของโหนดหลัก สมมติว่าเราต้องการรับตำแหน่งของตัวละครบนแผนที่ เราคำนวณ:
(ตำแหน่งของตัวละคร) + (ตำแหน่งของพาเรนต์โหนด) + (ตำแหน่งรูทโหนด) = (1,0) + (10,10) + (0,0) = (11,0)
ตกลงดังนั้นตลอดเวลาที่ตัวละครของคุณยืนอยู่บนแพลตฟอร์ม แล้วการกระโดดล่ะ ตอนนี้เขากระโดดคุณแยกเขาออกจากแพลตฟอร์มและแนบเขาไปยังโหนดที่มีแพลตฟอร์มนั้น ในกรณีนี้แผนที่ (โหนดรูท)
เมื่อเขาลงจอดอีกครั้งให้เขาติดกับสิ่งใดก็ตามที่เขาตกลงมา