【发布时间】:2011-02-27 18:01:01
【问题描述】:
我正在开发一款 2D 平台游戏,我想知道实现表面(碰撞)检测的最佳(性能方面)方法是什么。
到目前为止,我正在考虑构建一个由线条列表构成的关卡对象列表,并沿着线条绘制图块。
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)
}
所以我用来检测“跌落/在表面上行走”的逻辑是一个简单的点(玩家的小腿)-touches-line(表面)检查 (有一些安全近似值 - 让我们说线上 1-2 个像素)。
这种方法可以吗? 我一直难以找到有关此问题的阅读材料,因此请随时删除链接/建议。
【问题讨论】: