Я работаю над игрой (шутер сверху вниз) и наткнулся на небольшую загадку. До этого момента я порождал врагов с функциями, которые работают только с задержками:
Функция Wave One - Задержка 3, порождает врагов // Функция Wave Two - Задержка 6, порождает врагов
Я делаю это, потому что я не нашел способа дождаться завершения всех действий в данной функции, прежде чем вызывать следующую - при существующем положении функция functionWaveOne вызывает functionWaveTwo, которая вызывает functionWaveThree (et c).
Это работало до сих пор. Что изменилось, так это то, что я хочу, чтобы два врага остались на экране, и пока они не умрут, я не хочу, чтобы пришла следующая волна. Моим первоначальным решением этого было подсчитать, сколько врагов погибло в четвертой волне:
Обнаружить столкновение -> Применить урон -> Проверить, если мертв -> Если да, deadWaveFourEnemies ++
Вот Моя проблема: у меня есть основное оружие - два параллельных лазера, поэтому они могут столкнуться с врагом в одно и то же время. Это приводит к ложным срабатываниям, что делает счет мертвого врага на go выше, чем следовало бы. Я даже пытался добавить функцию «Я жив» к классу противника, но безрезультатно.
Кто-нибудь из вас получил рекомендацию о том, как лучше вызывать функции или обойти эти ложные позитивы? Спасибо!
Если это поможет:
if([enemySprite.name isEqual: @"shooter"]){
enemyShooter *enemyClass = (enemyShooter *)enemySprite;
itDied = [enemyClass doDamageWithAmount:secondaryWeaponDamage];
scoreIncrease = [enemyClass getScoreIncrease];
stillAlive = [enemyClass amIAlive];
}
[weaponSprite removeFromParent];
if(itDied){
[self increasePlayerScoreBy:scoreIncrease];
if(inWaveFour == 1 && stillAlive == 1){
waveFourKilled++;
NSLog(@"Seconday / Number killed: %i", waveFourKilled);
}
}