我正在制作一款塔防游戏,我的塔防已经达到了以适当的间隔发射子弹的地步。但我需要能够移除电影胶片。例如,如果一座塔发射了一颗子弹,它会制作一个子弹移动的副本,目标是特定敌人的副本。但是,我不知道如何配置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);
最后一个应该是清除敌人,我想。当你稍后试图移除已经移除的敌人时,这可能会引发错误?