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



我已经搜索了类似的问题,没有找到一个回答我的特殊情况。我在Edge Animate中创造了一款非常基础的游戏,即玩家的游戏组件(一个简单的矩形)可以在舞台上左右上下移动,并且玩家要尽量避免与其他以不同速度(沿着y轴)在舞台上移动的简单矩形碰撞(有点像《青蛙gger》的垂直版本)。我似乎找不到一个简单的碰撞检测算法,可以与边缘动画一起检测玩家的矩形何时与另一个矩形碰撞。下面是我在Edge Animate中对两个矩形的compostionready动作的代码(试图让它提醒矩形正在碰撞):

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);

}

但是当我运行程序时,没有碰撞检测。我做错了什么?我错过了什么?有更好的方法吗?所有的矩形都是与轴对齐的。

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

本质上,将检测到的与X、Y重叠分开,将表示1需要与[2]重叠的&&s从左改为与[2]重叠的&&s从右改为与[2]重叠的&在此之间,还有一个类似的语句检查y中的冲突。

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

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

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

我认为错误在于你的不等式是反向的…

如果object1在object2的左边,则中的object1。X + object1。宽度& lt;object2。x

如果object1在对象2的右边,则中的object1。X> object2。X + object2.width

先试一下,检查你的左/右碰撞是否有效,然后检查向上/向下类似。

最新更新