我正在开发一个2D平台游戏,想知道最好的(从性能上讲)实现Surface(碰撞)检测的方法。
目前,我考虑构建由线列表构成的级别对象列表,并沿着这些线绘制瓷砖。
alt text 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个像素)。
这种方法正确吗? 我一直很难找到这个问题的阅读材料,所以请随意提供链接/建议。