我不想互相重叠对象。我也想让对象保持在舞台极限。按钮必须在相互碰撞时移开。我试过hitTestObject但是按钮会像这样移动。
鱼2的示例移动代码 *更新
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全部改掉了。所有的功能都改变了,但不起作用。
更新2
现在没有错误,但是当fish3相互撞击时没有发生。我删除了用于鱼2的“空”鱼和鱼3。
if (fish2.hitTestObject(fish || fsih3)){
fish2y *= -1;
fish2x *= -1;
fishy*=-1;
fishx*=-1;
fish3y*=-1;
fish3x*=-1;
}
}
答案 0 :(得分:1)
我认为这是因为他们都在动。当你检查A和B鱼之间的碰撞时,如果碰撞是真的,不要只改变它们的速度* = - 1。相反,也要移动它们一次。
if (A.hitTestObject(B)){
Ay *= -1;
Ax *= -1;
By *= -1;
Bx *= -1;
h42();
}
并将null
添加到您的默认值,如下所示:
function h42(s:Event = null) {