Giải pháp của tôi sẽ là coi mọi thực thể vật lý trong bản đồ trò chơi là một nút cây và chính bản đồ là nút gốc . Các nút có thể chứa các nút khác. Mỗi nút được chứa (trực tiếp hoặc gián tiếp) bên trong nút bản đồ.
Ví dụ: giả sử nhân vật của bạn đang đứng trên một nền tảng. Nút của nền tảng chứa nút của nhân vật. Vì vậy, bất cứ khi nào nền tảng di chuyển, các nút mà nó chứa (trong trường hợp này là ký tự) cũng sẽ di chuyển.
Để điều này xảy ra, mỗi nút nên có vị trí (x, y) so với nút cha . Ví dụ: nhân vật của bạn có thể được đặt ở (1,0) so với nền tảng, bản thân nó có thể nằm ở (10,10) so với bản đồ trò chơi. Bằng cách đó, nếu nền tảng di chuyển, nhân vật của bạn sẽ di chuyển ngầm.
Trong cây phân cấp này, vị trí của mỗi nút bằng tổng vị trí của anh ta cộng với từng vị trí của các nút cha. Giả sử chúng ta muốn có được vị trí của nhân vật trên bản đồ. Chúng tôi tính toán:
(vị trí của ký tự) + (vị trí của nút cha) + (vị trí nút gốc) = (1,0) + (10,10) + (0,0) = (11,0)
OK, vì vậy tất cả thời gian này nhân vật của bạn đã đứng trên nền tảng. Nhảy thì sao? Chà, khoảnh khắc anh ta nhảy, bạn tách anh ta ra khỏi bục và gắn anh ta vào nút chứa nền tảng ; trong trường hợp này, bản đồ (nút gốc).
Khi anh ta hạ cánh lần nữa, gắn anh ta vào bất cứ nút nào anh ta đáp xuống.