2
AABB碰撞造成的平台跳跃问题
首先参见图: 当我的AABB物理引擎解析交点时,它会通过找到穿透较小的轴来实现,然后“推出”该轴上的实体。 考虑“向左跳转”示例: 如果力度X大于力度Y,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 < toCheck.Count; i++) { SSSPBody body = toCheck[i]; body.Test.Color = Color.White; if (body != this && body.Static) { float left = (body.CornerMin.X - …