javascript – 如何检测快速移动物体之间的碰撞

前端之家收集整理的这篇文章主要介绍了javascript – 如何检测快速移动物体之间的碰撞前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一般来说,为了检测画布游戏中的碰撞,我使用的东西如下:
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;
}

但是,只有当对象在处理帧时触摸时才会检测到碰撞.如果我有一个速度(像素/帧)大于其路径中的障碍物的宽度的精灵,它将通过障碍物,而不会检测到碰撞.

我将如何查看精灵与目的地之间的内容

解决方法

这通常是一个困难的问题,高质量的解决方案像Box 2D库将是有用的.

一个快速而肮脏的解决方案(在对角线移动的对象上产生误报) – 检查覆盖当前和前一帧中对象位置的边界框之间的碰撞.

而不是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)等

如果快速移动的物体较小(子弹),则测试线(从其起点到原始速度)与其他物体的箱体之间的碰撞.

原文链接:https://www.f2er.com/js/155150.html

猜你在找的JavaScript相关文章