所以我的问题只有在我的游戏中有两个敌人时才会发生。如果是一对一的..我不明白这个问题。
请查看我的代码,看看您是否可以收集到为什么我会收到这个致命错误。
从玩家目标数组中移除目标
-(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];
}
}
}
}
现在从调试中我收集到玩家不会将他们的队友添加为目标。但是,如果玩家可以看到对方队伍中的多个目标,他们将收集多个目标。但是,我猜测的问题在于我从阵列中删除目标的技术?任何人都可以检查并确保我没有在这里传递男生错误吗?
提前致谢。