我正在开发一个 2D 平台游戏,我想知道实现表面(碰撞)检测的最佳(性能方面)方法是什么。
到目前为止,我正在考虑构建一个由线条列表构成的关卡对象列表,并沿着线条绘制瓷砖。
替代文字 http://img375.imageshack.us/img375/1704/lines.png
我认为每个对象都保存着他行走的表面的 ID,以便在上坡/下坡时轻松操纵他的 y 位置。
像这样的东西:
//Player/MovableObject class
MoveLeft()
{
this.Position.Y = Helper.GetSurfaceById(this.SurfaceId).GetYWhenXIs(this.Position.X)
}
因此,我用来检测“在表面上掉落/行走”的逻辑是一个简单的点(玩家的小腿)-接触线(表面)检查(具有一些安全近似值 - 假设在线上 1-2 个像素)。
这种方法可以吗?我一直很难找到有关此问题的阅读材料,因此请随时删除链接/建议。