0
私の問題は、私のゲームのチームに2つの敵を持っている場合にのみ起こっています。それが1対1の場合..私は問題を取得しません。配列の突然変異が列挙されている間に
私のコードを見て、なぜ私がこの致命的なエラーを受けているのかを知ることができるかどうかを見てください。
は、アレイ
-(void)removeTarget:(PlayerClass *)target withSender:(PlayerClass *)sender {
if ([sender.targets containsObject:target]) {
[sender.targets removeObject:target];
}
}
をターゲットプレイヤーからターゲットを削除し、彼らがターゲットか
いるかどうかを判断するためのアップデートで配列-(void)addTarget:(PlayerClass *)target withSender:(PlayerClass *)sender {
//check if target already exists
if ([sender.targets count] > 0) {
for (PlayerClass *players in sender.targets) {
if ([players.name isEqualToString:target.name]) {
//Checked if exists, if target exists in list then move on.
goto outer;
}
}
}
[sender.targets addObject:target];
outer:;
}
をターゲットプレイヤーにターゲットを追加します。
-(void)update:(CFTimeInterval)currentTime { /* Called before each frame is rendered */ for (PlayerClass *player in _players) { .... if (player.health > 0) { //If player is alive! .... //Checks if the player has targets, if so & visible - Engage. if ([player.targets count] > 0) { for (PlayerClass *enemy in player.targets) { if (![player.team isEqualToString:enemy.team]) { if (enemy.health > 0) { if ([self lineOfSightBetweenPlayers:player andPlayer:enemy]) { [self attackWithPlayer:player againstPlayer:enemy]; break; } else { [player removeTarget:enemy withSender:player]; } } else { [player removeTarget:enemy withSender:player]; } } else { [player removeTarget:enemy withSender:player]; } } } }
デバッグから私は、プレーヤーがチームメイトをターゲットとして追加しないことを確認しました。ただし、相手チームのターゲットが複数ある場合は、複数のターゲットを集めます。しかし、私が推測している問題は、配列からターゲットを削除するという私のテクニックにありますか?誰でもチェックして、ここでスクールボーイのエラーを出していないことを確認できますか?
ありがとうございます。