壹樓的思路是對的,就是語法有點問題,而且碰撞檢測可以考慮用hitTestObject或hitTestPoint
我之前給同學寫過壹個遊戲,大量餅幹人從右到左飛,玩家要碰到所有餅幹人,不然就會減生命值,妳可以參考壹下這段代碼(主要是懶得重新寫了,以前寫的這個註釋很好)
這裏面碰撞和刪除的代碼都有了
要註意if(bmList.length>0)這句,如果忘了這個條件,屏幕上沒有子彈(數組為空)的時候就會出問題
addEventListener(Event.ENTER_FRAME,always);
function always(e:Event):void{
//當屏幕上有餅幹人的時候
if(bmList.length>0){
//控制所有的餅幹人
for(i=0;i<bmList.length;i++){
//餅幹人向左飛
bmList[i].x -= 5;
//當餅幹人飛出屏幕的時候
if(bmList[i].x<-100)
{
//把餅幹人刪掉
bg.removeChild(bmList.splice(i,1)[0]);
//生命值減壹
life--;
//更新顯示生命值的text box
ts.life.text = "Life: "+life;
}
//如果玩家碰到餅幹人
if(player.hitTestObject(bmList[i])){
//把餅幹人刪掉
bg.removeChild(bmList.splice(i,1)[0]);
//分數加壹
mark++;
//更新顯示分數的text box
ts.mark.text = "Mark: "+mark;
}
}
}
}
以上是我程序的壹部分,原代碼太長,這裏就不貼聲明變量和創建mc的部分了
如果有什麽不懂的可以再問