首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩形碰撞检测

矩形碰撞检测
EN

Stack Overflow用户
提问于 2016-05-29 17:27:13
回答 1查看 134关注 0票数 1

我试着用碰撞检测做一个小“游戏”。

问题是,在某些情况下,对象只是通过。我对此完全视而不见。

我尝试创建我自己的检测,它被注释掉了,然后我尝试这样做:

作为小提琴的代码示例

代码语言:javascript
复制
function rectanglesIntersect( minAx, minAy, maxAx, maxAy, minBx, minBy, maxBx, maxBy ) {
    var aLeftOfB = maxAx < minBx;
    var aRightOfB = minAx > maxBx;
    var aAboveB = minAy > maxBy;
    var aBelowB = maxAy < minBy;

    return !( aLeftOfB || aRightOfB || aAboveB || aBelowB );
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-30 02:42:25

幸运的是,您的rects在移动时具有以下简化特性:

  • 它们只朝Y方向移动(向上或向下)。
  • 他们都以每移动30便士的速度移动。

,这样您就可以确定rect对是否会像这样发生碰撞:

  1. 在移动开始时,通过测试它们是否垂直对齐,计算它们是否可能发生碰撞。 矩形1.x>矩形2.x &&;矩形1.x<矩形2.x+矩形2.宽度;
  2. 如果这对矩形彼此移动,则计算这对矩形是否在60个垂直像素内。60是很重要的,因为每一次移动都可以移动30个像素,这样rect对就可以通过每次移动的30+30=60px来彼此接近。 var willCollideThisMove =Math.abs(矩形1.y-矩形2.y)<=60;
  3. 如果两人发生碰撞,那么他们之间的距离差的中点就会发生碰撞: 变量collisionY =Math.min(矩形1.y,矩形2.y)+Math.abs(矩形1.y-矩形2.y)/2;

对所有的直角对进行这3次计算。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37512855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档