2012-01-13 3 views
0

im делает простую игру для Android в настоящий момент и задавался вопросом, как я могу оптимизировать своего врага-врага, или если мне это не нужно.Enemy spawn system android game

На данный момент я просто хочу порождать врагов, больше по мере того, как уровень продолжается. В игре нет ничего необычного, только один экран - я бы догадался - макс. 20 за раз на нем.

Так что мой подход:

ArrayList<Enemy> enemies = new ArrayList(); 

У меня есть ArrayList, где я буду хранить все мои порожденные врагов (от того же класса). Теперь в главной функции обновления я иметь следующее:

for (Enemy en : enemies){ 
     en.update(); 
    } 

Это было бы для позиции-обновления, теперь я, возможно, придется бежать второй раз через цикл, чтобы определить, которым врагов могут быть удалены, потому что он разрушен.

Это самый распространенный и эффективный способ для простой игры?

ответ

0

Попробуйте добавить собственность к врагу, названному «мертвым» или «удаленным». Таким образом, вы можете отслеживать, какие враги должны быть выпущены делать:

for (Enemy en : enemies) 
{ 
    if (en.isDead() == true) 
    { 
     // Remove en from enemies. 
     // You'll probably need to use a "for" here keeping track of the last 
     // element when deleting one. So you can continue checking/updating 
     // enemies. 
     continue; 
    } 
    en.update(); 
} 

Вы можете добавить эффекты, если вы не хотите, чтобы просто «исчезнуть» с экрана:

for (Enemy en : enemies) 
{ 
    if (en.isDead() == true) 
    { 
     en.startFadeOut(); 
    } 
    else if (en.isFadeFinished()) 
    { 
     // guessing some alpha channel property. 
     en.setAlpha(en.getAlpha() - 0.1 * ticks); 
     if (en.getAlpha() <= 0) 
     { 
      en.setFadeFinished(true); 
     } 
    } 
    en.update(); 
} 

конечно, вам нужно будет включить эту логику в обновление класса противника. Это всего лишь идея.

+0

Что-то похожее прошло в моем сознании. Так что, полагаю, метод ArrayList для борьбы с врагом в порядке? EDIT: Спасибо за наконечник с исчезновением. Будете считать это! – puelo

+0

@puelo Да, это просто, но функционально. Вам не нужно ничего сложного, чтобы заставить его работать. Будь проще. BTW Я только что отредактировал сообщение, проверьте идею затухания. – WoLfulus

+0

Хорошо. Поверните свой ответ как можно скорее, как только начнется 5 минут. Спасибо за быструю помощь. – puelo