0
그래서 내 문제는 내 게임에 팀에 두 적을 가지고 일어나고있다. 1 대 1 인 경우 .. 문제가 발생하지 않습니다.배열 변경 중에
내 코드를보고 왜이 치명적인 오류가 발생하는지 수집 할 수 있는지 확인하십시오.
은 대상 여부를
있어 여부를 결정하기 위해 업데이트에서 배열-(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)removeTarget:(PlayerClass *)target withSender:(PlayerClass *)sender {
if ([sender.targets containsObject:target]) {
[sender.targets removeObject:target];
}
}
을 추가 대상에서 대상을 제거합니다
-(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]; } } } }
디버깅에서 플레이어가 팀 동료를 목표물로 추가하지 않는다는 것을 알았습니다. 그러나, 상대방 팀에서 한 명 이상의 대상을 볼 수 있다면 플레이어는 두 개 이상의 대상을 모을 것입니다. 그러나 내가 추측하고있는 문제는 배열에서 대상을 제거하는 기술에 있습니다. 누구든지 점검하고 내가 학교 소년 오류를 여기 보내지 않았는지 확인 할 수 있습니까?
미리 감사드립니다.