我正在製作塔防遊戲,並且已經達到了我的塔以適當間隔發射子彈的程度。但我需要能夠刪除影片剪輯。例如,如果一座塔子射出一顆子彈,它會製作一個子彈動畫片段的副本,這個副本旨在複製特定的敵人。但是,我無法弄清楚如何配置hitTest。有沒有什麼辦法可以讓hittest檢查從特定對象複製的所有兒童影片剪輯?如何擊中所有動畫片段的實例 - ACTIONSCRIPT 2
編輯:我添加了這個功能,每秒執行一次。但由於某種原因,它不能確認命中。
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;
}
這是它增加了圓圈的對象的代碼。
我想到了,但我該如何管理何時檢查它?如果我在屏幕上有30個敵人和30發子彈,每個實例是否應該不斷檢查?或者更好的方法是爲每個子彈和每個敵人都堆疊一個「每個」陣列,這個陣列貫穿所有陣列;並且每秒都有一次檢查? – Nick 2012-02-18 15:51:47
那麼有很多不同的方法可以用來檢查。做一個遊戲時我喜歡做的一件事就是創建一個「主循環」,因爲我習慣於C++並且總是有一個主循環。我不知道這是否是在Flash中最好的方式,但我這樣做並沒有任何問題。我認爲計時器是實現這個循環的好方法。你添加的代碼看起來是正確的想法。不知道爲什麼它沒有擊中。嘗試在你調用該函數的地方發佈代碼(事件監聽器部分),以及向陣列添加敵人和子彈的位置。 – 2012-02-18 21:38:26
我檢查並通過故障排除發現它識別數組中的對象。例如,我可以使用removeMovieClip(enemiesArray [yy])使敵人離開舞臺,但我無法訪問任何方法或屬性的動畫片段。我認爲這是我的問題,因爲我正在使用movieclip上的hitTest函數。是否有某些原因導致我無法訪問這些屬性? 編輯:他們都提出了undefined – Nick 2012-02-18 21:43:51