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

时间:2015-06-09 17:50:42

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

我已经搜索过类似的问题而找不到能够回答我特定情况的问题。我正在Edge Animate中创建一个非常基本的游戏,其中玩家的游戏棋子(一个简单的矩形)可以在舞台上左右,上下移动,并且玩家试图避免与各种其他简单的矩形碰撞沿着舞台(沿着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) {

//物体在触碰     警报(&#34;哎呀!你坠毁了!&#34;);     setInterval(sym(e),35);

}

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

2 个答案:

答案 0 :(得分:1)

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

本质上,分解检测与X和Y的重叠,改变&amp;&amp; s暗示1需要与左边和右边的[2]重叠|| s,包裹它括号,放一个&amp;&amp;在那之间和一个类似的声明检查y中的碰撞。

这样的东西应该可以工作,但是你需要知道对象的顶部,左边,右边和底边在哪里(相对于对象的x在哪里:左边,中间,右边?编辑:见imgur.com/GE2vVVB

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

答案 1 :(得分:0)

如果我是你,我会做的第一件事是在代码中添加一些调试器行或console.log(...),以便您可以更轻松地调试它。

我认为错误在于你的不平等是倒退......

如果object1在object2的左边,那么         object1.x + object1.width&lt; object2.x

如果object1在对象2的右边,那么         object1.x&gt; object2.x + object2.width

首先尝试并检查左/右碰撞是否正常,然后同样检查上/下。

相关问题