2
ปัญหาการข้ามแพลตฟอร์มด้วยการชน AABB
ดูแผนภาพแรก: เมื่อเอนจิน AABB ฟิสิกส์ของฉันแก้ไขการตัดกันมันจะทำเช่นนั้นโดยการค้นหาแกนที่การแทรกซึมมีขนาดเล็กลงจากนั้น "ผลัก" เอนทิตีบนแกนนั้น พิจารณาตัวอย่าง "การย้ายที่กำลังกระโดดซ้าย" ถ้า velocityX ใหญ่กว่า velocityY AABB จะผลักเอนทิตีออกไปบนแกน Y แล้วหยุดการกระโดดได้อย่างมีประสิทธิภาพ (ผลลัพธ์: ผู้เล่นหยุดกลางอากาศ) ถ้า velocityX มีขนาดเล็กกว่า velocitY (ไม่แสดงในแผนภาพ) โปรแกรมทำงานตามที่ตั้งใจไว้เพราะ AABB ผลักเอนทิตีออกไปบนแกน X ฉันจะแก้ปัญหานี้ได้อย่างไร รหัสแหล่งที่มา: public void Update() { Position += Velocity; Velocity += World.Gravity; List<SSSPBody> toCheck = World.SpatialHash.GetNearbyItems(this); for (int i = 0; i < …