You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义引擎开发中Collider碰撞检测异常问题求助

自定义引擎碰撞检测异常修复

你的isCollide函数逻辑存在错误,这就是检测脚本误判未知碰撞的核心原因。

错误点

第四个判定条件(x2 > (x2 + w2))完全不合理——一个矩形的左边界不可能大于自身右边界,这行代码永远返回false,导致碰撞检测的排除逻辑失效,本该判定为无碰撞的场景会被错误判定成碰撞。

修复后的代码

function isCollide(y, x, w, h, x2, y2, w2, h2) {
    square(w, h, x, y, 'red')
    // square(w2, h2, x2, y2, 'blue')
    return !(
        ((y + h) < (y2)) ||
        (y > (y2 + h2)) ||
        ((x + w) < x2) ||
        (x > (x2 + w2)) // 把x2改成x,修正判定逻辑
    );
}

逻辑说明

AABB矩形碰撞检测的核心是:只要满足任意一个「不重叠」条件,就判定为无碰撞;反之则判定有碰撞。正确的四个不重叠条件是:

  • 第一个矩形的底部 < 第二个矩形的顶部
  • 第一个矩形的顶部 > 第二个矩形的底部
  • 第一个矩形的右侧 < 第二个矩形的左侧
  • 第一个矩形的左侧 > 第二个矩形的右侧

你之前把第四个条件里的「第一个矩形的x坐标」误写成了「第二个矩形的x坐标」,直接导致逻辑完全错误。

内容的提问来源于stack exchange,提问作者bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:22:04