Hiện tại, tôi có một platformer với gạch cho địa hình (đồ họa mượn từ Cave Story). Trò chơi được viết từ đầu bằng XNA, vì vậy tôi không sử dụng động cơ hoặc động cơ vật lý hiện có.
Các va chạm gạch được mô tả khá chính xác như được mô tả trong câu trả lời này (với SAT đơn giản cho hình chữ nhật và hình tròn), và mọi thứ đều hoạt động tốt.
Ngoại trừ khi người chơi chạy vào tường trong khi ngã / nhảy. Trong trường hợp đó, họ sẽ bắt được một viên ngói và bắt đầu nghĩ rằng họ đã chạm sàn hoặc trần nhà không thực sự ở đó.
Trong ảnh chụp màn hình này, người chơi đang di chuyển sang phải và rơi xuống. Vì vậy, sau khi di chuyển, các va chạm được kiểm tra - và đầu tiên, hóa ra nhân vật người chơi đang va chạm với gạch thứ 3 từ trên sàn và đẩy lên trên. Thứ hai, anh ta phát hiện va chạm với viên gạch bên cạnh và đẩy sang một bên - kết quả cuối cùng là nhân vật người chơi nghĩ rằng anh ta nằm trên mặt đất và không rơi xuống, và 'bắt' trên viên gạch miễn là anh ta chạy vào nó .
Thay vào đó, tôi có thể giải quyết điều này bằng cách xác định các viên gạch từ trên xuống dưới, điều này khiến anh ta rơi xuống một cách trơn tru, nhưng sau đó trường hợp ngược lại xảy ra và anh ta sẽ chạm vào trần nhà không có khi nhảy lên tường.
Làm thế nào tôi nên tiếp cận giải quyết điều này, để nhân vật người chơi có thể rơi dọc theo bức tường như nó cần?