javascript - 边缘动画程序的简单碰撞检测

标签 javascript algorithm jquery-animate collision-detection adobe-edge

我搜索了类似的问题,但没有找到能回答我的特定情况的问题。我正在 Edge Animate 中创建一个非常基本的游戏,其中玩家的游戏 block (一个简单的矩形)可以在舞台上左右移动,并且玩家试图避免与在舞台上动画的其他各种简单矩形发生碰撞(沿 y 轴)以不同的速度(有点像 Frogger 的垂直版本)。我似乎无法找到一种简单的碰撞检测算法,它可以与 Edge Animate 一起使用来检测玩家的矩形何时与另一个矩形发生碰撞。这是我在 Edge Animate 中针对两个矩形的 compositionReady 操作的代码(试图让它提醒矩形正在碰撞:

var object1 = sym.getSymbol("BlueRectangle");
var object2 = sym.getSymbol("RedRectangle");
if (object1.x < object2.x + object2.width  && object1.x +    object1.width  > object2.x &&
    object1.y < object2.y + object2.height && object1.y + object1.height > object2.y) {

//物体相互接触 alert("糟糕!你坠毁了!"); setInterval(sym(e), 35);

但是当我运行程序时,没有碰撞检测。我究竟做错了什么?我错过了什么?有一个更好的方法吗?我所有的矩形都是轴对齐的。任何帮助将不胜感激。

最佳答案

看起来您正在检查它们是否完全重叠,而不是碰撞。如果存在任何重叠,而不仅仅是完全重叠,您要确保检测到碰撞。

本质上,打破与X和Y的重叠检测,改变&&s暗示1需要从左侧与 [2] 重叠,从右侧与 ||s 重叠,将其包裹在括号中,在其间放置一个 && 以及检查 y 中的冲突的类似语句。

这样的事情应该可行,但您需要知道对象的上边缘、左边缘、右边缘和下边缘在哪里(x 相对于对象的位置:左侧、中间、右侧?编辑:参见 imgur.com/GE2vVVB )

if ((object1.xright >= object2.xleft || object1.xleft <= object2.xright) && (object1.ytop >= object2.ybottom || object1.ybottom <= object2.ytop))

关于javascript - 边缘动画程序的简单碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30739314/

相关文章:

javascript - 将动画函数作为参数传递

javascript - 当文本在里面时,jquery animate 导致 div 为 'jump'

jquery - 从底部拉出/向上滑动div?

javascript - NodeJS : Not able to access an image using ajax GET method. 但相同的 URL 在浏览器中加载图像没有任何问题

javascript - 如何通过 React-Loadable 获取状态? React-Redux

javascript - Jsonwebtoken 如何在 Node.js Express 的 header 中保存 token

algorithm - 从混合图中提取链组件

c++ - O(N) 算法比 O(N logN) 算法慢

javascript - 无法对不变多态类的数组进行建模

algorithm - Morris中序树遍历算法运行时