【发布时间】:2010-12-13 22:55:08
【问题描述】:
我很难根据经验学习碰撞检测。我正在制作一款类似于 Minecraft 的盒子游戏,并且正处于实施碰撞检测的阶段。
我已经完成了 x 和 y 轴,因为一切都由立方体组成,我想制作自己的碰撞检测器并使其尽可能轻。
有没有办法进行“像素完美”的碰撞,即当玩家的边界框(或圆圈)接触到它注册为碰撞的框时?现在这就是我所做的:
if(-TOUCH_DISTANCE-1 < yPlayer-yBox && yPlayer-yBox < TOUCH_DISTANCE-1)
{
collisionNorth = true;
}
if(-TOUCH_DISTANCE+1 < yPlayer-yBox && yPlayer-yBox < TOUCH_DISTANCE+1)
{
collisionSouth = true;
}
它基本上检测到一定范围内的碰撞,这意味着错误,我不喜欢 :(。注意 +/-1 将“碰撞墙”偏移到盒子的相应一侧。
这在较低的速度下有效,但是一旦有一些动作(当我破解速度变量时),就无法再检测到碰撞,因为我走得太快并直接穿过立方体......有没有办法让它证明wallhax0r?
这在 z 轴上尤其烦人,当玩家高速坠落时,即使定义了可观的碰撞余量,它最终也会看起来很糟糕(玩家半埋)。
【问题讨论】: