Sam*_*Sam 10 javascript html5 canvas
一般来说,为了检测帆布游戏中的碰撞,我会使用以下内容
function collides(a, b) {
return a.x < b.x + b.width &&
a.x + a.width > b.x &&
a.y < b.y + b.height &&
a.y + a.height > b.y;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果在处理帧时对象正在触摸,则这仅检测冲突.如果我有一个精灵,其速度(以像素/帧为单位)大于其路径中障碍物的宽度,它将通过障碍物而不会检测到碰撞.
我如何检查精灵和目的地之间的内容?
这通常是一个难题,对于高质量的解决方案,像 Box 2D 库这样的东西会很有用。
\n\n快速而肮脏的解决方案(对对角移动的对象给出误报) \xe2\x80\x94 检查覆盖当前帧和前一帧中对象位置的边界框之间的碰撞。
\n\n代替a.x使用min(a.x, a.x - a.velocity_x),代替a.x + a.width使用max(a.x + a.width, a.x + a.width - a.velocity_x),等等。
如果快速移动的物体很小(一颗子弹),则测试线(从原点到原点+速度)与其他物体的盒子之间的碰撞。
\n