好吧,我有這個主要的類叫做敵人,並且裏面有不同的敵人(即ZombieEnemy)的子類。我需要一種方法來瞄準敵人的所有精靈/子類。也就是說,爲了檢測碰撞,我需要一種方法來查看是否所有敵人都'死了'來結束關卡。針對所有的子類和精靈(cocos2d iPhone)
謝謝
好吧,我有這個主要的類叫做敵人,並且裏面有不同的敵人(即ZombieEnemy)的子類。我需要一種方法來瞄準敵人的所有精靈/子類。也就是說,爲了檢測碰撞,我需要一種方法來查看是否所有敵人都'死了'來結束關卡。針對所有的子類和精靈(cocos2d iPhone)
謝謝
有很多方法可以做到這一點。一種方法是向你的敵人級別添加一個方法,如-(BOOL)isEnemy
,它只返回YES。 (如果Enemy擁有一個可以自定義的超類,比如GameObject,那麼實際上它會更有用。在該類中實現-isEnemy返回NO,否則,您將不知道是否可以在給定對象上調用-isEnemy。)子類將自動繼承這個方法。或者,您可以使用-isKindOfClass:
來測試每個對象的類別。或者,因爲你是造成敵人的那個人,你當然可以列出所有活躍的敵人。如果屏幕上有很多物體,這可能是最好的計劃,只有其中一些是敵人物體。
決定所有敵人死亡的時間是你可能想要經常做的事情。保留一個活的敵人名單可能是有意義的。當敵人死亡時,將其從列表中刪除。您可以通過檢查活動敵人列表的長度來快速測試玩家是否成功清除了關卡。如果它大於0,那麼還有更多工作要做。
在任何給定的等級中,我都有一些(2-4)不同的敵人在屏幕上(就像一個例子)。我只想得到所有的敵人(每種類型,每種類型都是不同的子類),並使用它們。就像我說的,我需要製作一個if方法來結束關卡。 (如果所有的敵人都被殺死了,等等等等)。當然,這就是我想要用英語做的事情)我想知道基本上說「所有敵人」最有效的方法。謝謝 – Joethemonkey101 2011-03-23 20:03:42
哦,謝謝你提供關於'list'的信息,但我從某種意義上解決了這個問題。我有一個'allEnemiesKilled'的方法。問題是我不知道如何檢查是否所有的敵人都被殺死了。例如,如果我想查看是否所有的殭屍敵人都被殺死了,那麼如果所有的ZombieEnemy's.hp = 0,end Level,我都會這樣做(用英文和代碼)。 告訴我,如果我沒有足夠清楚的解釋,我知道我有時可能會感到困惑:) – Joethemonkey101 2011-03-23 20:06:41
基本上總結一下,什麼可以代替「所有殭屍的敵人」?我想把這個班的所有精靈分成一組,所以我可以打電話 'if(allZombieEnemies.hp = 0){ //結束等級 }' – Joethemonkey101 2011-03-23 20:08:11