Javascript Canvas 碰撞侧检测

标签 javascript html canvas collision

嘿,我正在尝试获取 Canvas 中两个对象碰撞的一侧。这是我用于碰撞检测的内容,但它只检查碰撞,没有特定的一面。

其中 o1 和 o2 是具有属性的对象:
x - X 轴上的位置y - Y 轴上的位置w - 矩形的宽度h - 矩形的高度

var collidesWith = function (o2) {
    var o1 = this;
    if ((o1.y + o1.h) < o2.y) {
        return 0;
    }
    if (o1.y > (o2.y + o2.h)) {
        return 0;
    }
    if ((o1.x + o1.w) < o2.x) {
        return 0;
    }
    if (o1.x > (o2.x + o2.w)) {
        return 0;
    }
    return 1;
};

编辑 :这是我为元素顶部的碰撞检测提出的代码:
if (
    (o1.y - o1.dy >= o2.y) &&
    (o1.y - o1.dy <= o2.y + o2.h) &&
    (o1.x + o1.w >= o2.x) &&
    (o1.x <= o2.x + o2.w)
) {
    // We have collision at the top end
}

最佳答案

你需要这样的双重条件:

if ((o1.y > o2.y) && (o1.y < o2.y + o2.h)) {
  return 'top'; // o1's top border collided with o2's bottom border
}

其他方面也是如此。

关于Javascript Canvas 碰撞侧检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098002/

相关文章:

javascript - 有没有办法检测图像是否已被拖放到 div 中而不移动图像?

css - 更改面板 View

html - 那里已经有 AngularJS 的 Canvas 绘图指令了吗?

javascript - 如何制作 HTML5 Canvas "Press/Click to play"开始屏幕

javascript - 对相似参数进行分组的逻辑

javascript - 在 javascript/Jquery 中使用 freemarker 变量

javascript - 如何通过库请求通过 HTTP POST 请求获取响应正文

c# - 在 webbrowser 控件中执行 javascript

javascript - 是否可以检测单击 Canvas 的位置并在单击后删除项目?

javascript - 向谷歌地图添加多个标记