互相撞击时移开物体

Moving away object when hit each other

我不想彼此重叠 objects.Also 我想将对象保留在舞台上 limit.The 按钮必须在每次点击时移开 other.I 尝试了 hitTestObject 但按钮移动就像这个。

鱼 2 的示例移动代码 *UPDATE

var fish2x:Number=10;
var fish2y:Number=14;
 
stage.addEventListener(Event.ENTER_FRAME,h42);
function h42(s:Event = null) {
fish2.x+=fish2x;
fish2.y+=fish2y;
if ((fish2.x>=stage.stageWidth-fish2.width/2)|| (fish2.x <= fish2.width/2 )) {
    fish2x*=-1;
}
if ((fish2.y>=stage.stageHeight-fish2.height/2)|| (fish2.y <= fish2.height/2 )) {
    fish2y*=-1;
}

if (fish2.hitTestObject(fish3)){
fish2y *= -1;
fish3y *= -1;
h42();
}
}

我也尝试了不同的功能

stage.addEventListener(Event.ENTER_FRAME,crash);
function crash(s:Event) {
 
if (fish2.hitTestObject(fish || fish3 )) {

fish2y*=-1;
message.text="crash";
}
}

对于超过 2 条鱼不起作用。 我设置了 null fish2 和 fish 3 而不是我使用这段代码。

if (fish2.hitTestObject(fish3 || fish4)){
fish2y *= -1;
fish2x *= -1;
h42();
 }

我把 hittestoject 都改掉了 them.All 函数像这样改变,但它不起作用。

更新 2

现在没有错误了,但是当 fish3 击中每个时不会发生 other.I 移除 "null" fish 和 fish 3 仅用于 fish 2。

        if (fish2.hitTestObject(fish || fsih3)){
fish2y *= -1;
fish2x *= -1;
fishy*=-1;
fishx*=-1;
fish3y*=-1;
fish3x*=-1;
}
}

我想是因为他们都在动。当您检查 A 和 B 鱼之间的碰撞时,如果碰撞为真,则不要仅将它们的速度更改 *=-1。相反,也将它们移动一次。

if (A.hitTestObject(B)){
    Ay *= -1;
    Ax *= -1;
    By *= -1;
    Bx *= -1;
    h42();
}

并将 null 添加到您的默认值,如下所示:

function h42(s:Event = null) {