1

我已经通过类似的问题进行了搜索,没有找到答案我的特定情况。我在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) { 

//中的对象都在触摸 警报(“哎呀你崩溃! “); 的setInterval(符号(E),35);?

}

但是当我运行该程序,没有碰撞检测什么我做错了什么我缺少的是有一更好的方法来做到这一点?我所有的矩形都将轴对齐。任何帮助将不胜感激。

回答

0

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

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

如果object1是向左对象2的再 object1.x + object1.width < object2.x

如果object1是正确的对象2然后 object1.x> object2.x + object2.width

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

1

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

在本质上,分手检测与X和Y的重叠,改变& &小号暗示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)) 
+0

谢谢,userbd,为您提供帮助。那么我需要告诉函数我的object1和object 2边缘是从哪里开始的?我会怎么做?对不起,我是Edge的新手,语法(正确合并javascript)对我来说是个问题。 – bwang97

+0

我并不那么熟悉边缘动画。它取决于对象的x和y属性引用的位置。我可以看看你的代码,并找出它,或者我做了一个图像,应该可以帮助http://imgur.com/GE2vVVB 你可以尝试所有3,看看哪一个工作正确 – userbd

+0

哇!感谢您为我浏览该图表。我认为这可以提供帮助。我会尝试一些更多的编辑,看看我能否实现它。再次感谢。 – bwang97