Actionscript 3 AS3二维矩形碰撞块

Actionscript 3 AS3二维矩形碰撞块,actionscript-3,block,collision,Actionscript 3,Block,Collision,我需要在动作脚本中阻止两个互相碰撞的矩形。我的代码只在维度上起作用(只有X对X的碰撞或Y对Y的碰撞)。当我测试它是否在X轴和Y轴上碰撞时,它们相互干扰 功能冲突测试(obj1、obj2) { var b1=getBound(obj1); var b2=getBound(obj2); 如果((b1.xb2.x))&((b1.y+b1.height>b2.y)和((b1.yb2.x+b2.width) obj1.x=b2.x+b2.x宽度; else if(b1.x

我需要在动作脚本中阻止两个互相碰撞的矩形。我的代码只在维度上起作用(只有X对X的碰撞或Y对Y的碰撞)。当我测试它是否在X轴和Y轴上碰撞时,它们相互干扰

功能冲突测试(obj1、obj2) {

var b1=getBound(obj1);
var b2=getBound(obj2);
如果((b1.xb2.x))&((b1.y+b1.height>b2.y)和((b1.yb2.x+b2.width)
obj1.x=b2.x+b2.x宽度;
else if(b1.xb2.y+b2.height)
obj1.y=b2.y+b2.H;
}
}

如果有任何其他方法来测试冲突并阻止它,那么请告诉我,但是我在Google和stackoverflow上搜索过,没有找到任何有用的方法阻止冲突,但是我找到了很多关于测试它们的方法。

步骤1:获取Box2d。 第二步:谢谢我:)

认真地说,使用知名的、高度优化的库。你可能有更多的机制来处理碰撞

如果碰撞是您唯一想要的,那么我建议您使用hitTest。这样做的好处是,您可以相互比较不规则形状,而不仅仅是盒子。如果hitTest为真,则只需在对象每次移动时进行测试。如果是,则恢复到以前的状态,或将它们一个接一个地放置

此方法的另一个变体是为移动的对象添加“光环”。如果光环击中目标物体,停止。这样,您就不必执行额外的步骤来重新定位对象


希望我能清楚地表达我自己,我半睡着了:D

hitTestObject
对两个矩形对象很好:

if (obj1.hitTestObject(obj2))
{
    // handle collision
}

如果是纯矩形碰撞,则可以使用相交矩形方法

var overlapRect:Rectangle = RECTANGLE1.intersection(RECTANGLE2);
这将把像这样的碰撞信息转储到overlapRect中

从那里,您可以使用逻辑找出碰撞发生的位置,并使用交叉点宽度和高度将一个矩形从另一个矩形移开

var overlapRect:Rectangle = RECTANGLE1.intersection(RECTANGLE2);