2013-09-21 2 views
0

플레이어 (총)가 적 (baddie)을 쏴서 점수를 얻는 게임을 만들고 있습니다. 게임을 끝낼 때까지 세 가지 생명 (생명)을 갖도록 설정했습니다. 플레이어가 객체 (waterMelon)를 수집 할 때 작동하는 addLife 함수를 추가하려고합니다. 즉, 생명을 얻습니다. 5 초마다 무비 클립의 인스턴스를 무비에 추가하는 addLife 함수를 실행하는 타이머 이벤트를 추가했습니다. 이 함수에서, ive는 checkCollisions라는 또 다른 함수를 만들었습니다.이 함수는 플레이어와 객체의 충돌을 검사하고 무대에서 객체를 제거한 다음 생명을 추가합니다.AS3에서 충돌 감지시 오브젝트 제거

var timer2:Timer = new Timer(5000); 

timer2.addEventListener(TimerEvent.TIMER, addLife); 
timer2.start(); 
var watermelon:waterMelon = new waterMelon(); 

function addLife(evt:TimerEvent):void{ 
    watermelon.x = Math.random() * stage.stageWidth; 
    watermelon.y = Math.random() * stage.stageHeight; 

    addChild(watermelon); 
    watermelon.push(waterMelon); 

    checkCollision(); 
} 

function checkCollision(){ 
    if (gun.hitTestObject(watermelon)){ 
    removeChild(watermelon); 
    lives++; 
    livesDisplay.gotoAndStop(livesDisplay.currentFrame-1); 
    } 
} 

(가) 무대에 수박을 추가하지만, 내 플레이어가 충돌 할 때,이 단계에서 제거되지 않습니다 작동 코드의 유일한 부분. 누군가가 내 수박을 무대에서 완전히 제거하고 플레이어가 충돌했을 때 내 선수에게 생명을 불어 넣을 수있는 방법을 말해 줄 수 있습니까? 다시 한번, 각 객체는 이것과 동일합니다. = 플레이어, 수박 = 삶을 살고 = 객체/수박, livesDisplay 삶의 = 물리적 표시됩니다.

+1

watermelon.push (waterMelon)은 무엇입니까? 평균? – Pan

답변

0

개체 (waterMelon) 대신 스테이지에서 배열 (수박)을 삭제하려고했습니다. 외모에 의해 배열을 사용하고 있기 때문에 배열 수박에서 총과 충돌하는 개체의 인덱스를 찾아야합니다. for 루프를 사용하면이 작업을 수행 할 수 있습니다.

for (melonCount:int = 0; melonCount>watermelon.length;melonCount--) 
{ 
if (gun.hitTestObject(watermelon[melonCount])) 
{ 
    removeChild(watermelon[melonCount]) 
    watermelon.splice(melonCount, 1) 
    melonCount-- 
} 
} 
관련 문제