如何为电影剪辑的所有实例击球-ACTIONSCRIPT2



我正在制作一款塔防游戏,我的塔防已经达到了以适当的间隔发射子弹的地步。但我需要能够移除电影胶片。例如,如果一座塔发射了一颗子弹,它会制作一个子弹移动的副本,目标是特定敌人的副本。但是,我不知道如何配置hitTest。有没有什么方法可以检查从特定对象复制的所有子电影片段?

编辑:我添加了这个函数,就是每秒钟执行一次。但出于某种原因,它并没有证实这些点击。

function checkHits(){//checks for hits between enemies and bullets
for (var zz = 0; zz < bulletArray.length; zz += 1)//checks for each bullet
{
    for(var yy=0;yy<enemiesArray.length;yy+=1){//checks for each enemy
        trace("enemies loc"+yy+":"+enemiesArray[yy]);
        trace("bullet loc"+zz+":"+bulletArray[zz]);
        if(bulletArray[zz].hitTest(enemiesArray[yy])){
            trace("HIT!");
           removeMovieClip(bulletArray[zz]);
           removeMovieClip(enemiesArray[yy]);
           bulletArray.splice(zz,1);
           bulletArray.splice(yy,1);
           }//end if
    }//end for
}//end for

}

function dupeCircle()
{
//trace("Dupe circle initiated");
duplicateMovieClip(circlebase, "_root.circle" + circleCount, circleCount);
bulletArray.push("circle" + circleCount);
trace(bulletArray[0]._width);
circleCount += 1;
}

这是添加圆的对象的代码。

您可以保留一个包含所有要测试的movieclip的数组,然后在该数组中循环并检查每一个。所以,每当你在屏幕上添加一个,就把它添加到数组中。然后,当您想要测试时,请测试该数组中的每个人。如果要将其删除,请将其从阵列和屏幕中删除。

编辑

以下是我在这种情况下的想法。。。

function dupeCircle() 
{    
    //trace("Dupe circle initiated"); 
    bulletArray.push(duplicateMovieClip(circlebase, "_root.circle" + circleCount, circleCount));
    circleCount += 1; 
 }

基本上,只需将实际的movieclip存储在数组中,然后您就可以对bulletArray[index].hitTest执行您试图执行的操作,它应该会起作用。(在存储另一个数组的实际movieclip时也执行相同的操作)

您从bulletArray中移除了2次:

       bulletArray.splice(zz,1);
       bulletArray.splice(yy,1);

最后一个应该是清除敌人,我想。当你稍后试图移除已经移除的敌人时,这可能会引发错误?

最新更新