Actionscript 3 对象重叠逻辑

Actionscript 3 对象重叠逻辑,actionscript-3,Actionscript 3,下面是添加到stage的对象的代码,然后检查新添加的对象是否与以前的对象重叠。问题是当玩家移动时,舞台上的物体会随机移动,因为不断产生随机物体。这在进入帧计时器中被称为 if(onStageCount < 15){ var Square:MovieClip; Square = new mcSquare(); Square.x = Math.random() * 1000 + ((Math.abs(_boundaries.x) + (stage

下面是添加到stage的对象的代码,然后检查新添加的对象是否与以前的对象重叠。问题是当玩家移动时,舞台上的物体会随机移动,因为不断产生随机物体。这在进入帧计时器中被称为

if(onStageCount < 15){
        var Square:MovieClip;
        Square = new mcSquare();
        Square.x = Math.random() * 1000 + ((Math.abs(_boundaries.x) + (stage.stageWidth)));
        Square.y = Math.random() * stage.stageHeight/2.5 + (stage.stageHeight/2.5);
        ObjectArray.push(Square);
        onStageCount += 1;
    }
    for (var i in ObjectArray){
        for (var a in ObjectArray){
            if(ObjectArray[i].hitTestObject(ObjectArray[a]) && a != i){ChildrenColliding = true;}
            while(ChildrenColliding){
            ObjectArray[i].x += (ObjectArray[a].width + 75);
            ObjectArray[i].y += (ObjectArray[a].height + 40);
            ChildrenColliding = false;
                if(ObjectArray[a].hitTestObject(ObjectArray[i]) && a != i){ChildrenColliding = true;}
            }
        }
        _boundaries.addChild(ObjectArray[i]);
    }
if(onStageCount<15){
var Square:MovieClip;
Square=新的mcSquare();
Square.x=Math.random()*1000+((Math.abs(_bounders.x)+(stage.stageWidth));
Square.y=Math.random()*stage.stageHeight/2.5+(stage.stageHeight/2.5);
ObjectArray.push(正方形);
onStageCount+=1;
}
for(ObjectArray中的变量i){
for(ObjectArray中的变量a){
if(ObjectArray[i].hitTestObject(ObjectArray[a])&&a!=i){ChildrenColliding=true;}
while(儿童学习){
ObjectArray[i].x+=(ObjectArray[a].width+75);
ObjectArray[i].y+=(ObjectArray[a].height+40);
ChildrenColliding=假;
if(ObjectArray[a].hitTestObject(ObjectArray[i])&&a!=i){ChildrenColliding=true;}
}
}
_addChild(ObjectArray[i]);
}

该代码将在每次调用时生成一个平台。如果希望同时出现多个(即在单个计时器事件中),可以将开头的
If
更改为
while
。这将使它生成平台,直到每次调用函数时有15个平台

无论何时放置平台,您都不需要检查每一次可能发生的碰撞-已经存在的碰撞都很好。您只需使用一个
即可。。。在
循环中,根据
Square
测试每个对象,必要时移动
Square
。这将防止对象在平台生成过程中“随机移动”。不过,最好像第一次那样重新生成头寸,而不是用特定的数量来抵消它们


要在屏幕上生成一些平台,最简单的方法是在第一次生成平台时使用不同范围的x值。您还可以像往常一样生成它们,并在游戏开始时将它们向前移动一定数量。尽管有很多方法,但如果不了解整个游戏的运行情况,很难说哪种方法是最好的。

那么你希望得到什么样的解决方案呢?我想这就是我正在努力的方向。我不确定,我所知道的是,上面的代码创建了一个非常“不稳定”的平台生成,我想我希望它最初在屏幕上生成一些,然后在那之后,只在舞台下生成它们,检查整个碰撞,然后滑到舞台上,而不是彼此重叠。。。