2013-09-21 3 views
0

Я делаю игру, в которой ваш игрок (пистолет) стреляет в врагов (baddie), чтобы набрать очки. Я настроил его так, что у вас есть три жизни (жизни), пока не закончится игра. Я пытаюсь добавить функцию addLife, которая работает, когда ваш игрок собирает объект (waterMelon), он получает жизнь. Я добавил событие таймера, которое запускает функцию addLife, которая добавляет экземпляр ролика Movie на сцену каждые 5 секунд. В этой функции 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

Что делает арбуз.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-- 
} 
} 
Смежные вопросы