Я пытался создать AI для своего класса Enemy, и у меня возникают проблемы с обновлением, которое Enemy ближе всего к Player. Он работает, когда есть только два врага, но когда у вас 3 или более, когда возникают проблемы. Я всего лишь хочу, чтобы ближайший к атаке, но все враги, кроме самого дальнего, делают.
Я думаю, что это связано с тем, что с тремя или более спрайтами между ними можно заключить безопасное положение и атаку, но как я получу средние враги, чтобы понять, когда перед ними стоит какая-то tempEnemy?
CCArray *fellowEnemy = [self allyArray];
for (int i = 0; i<[fellowEnemy count]; i++) {
Enemy *tempEnemy = [fellowEnemy objectAtIndex:i];
if (tempEnemy == self) continue;
CGPoint tempDifference = ccpSub(player.position, tempEnemy.position);
CGPoint selfDifference = ccpSub(player.position, self.position);
float tempToPlayer = ccpLength(tempDifference);
float selfToPlayer = ccpLength(selfDifference);
if (tempToPlayer > selfToPlayer) {
newPosition = attackPosition;
}else if (tempToPlayer < selfToPlayer){
newPosition = safePosition;
}else{
newPosition = safePosition;
}
}
[self setPosition:newPosition];
Спасибо