敵のクラス用にAIを作成しようとしていますが、どの敵がプレーヤーに最も近いかを更新するのに問題があります。敵が2人しかない場合は機能しますが、問題が発生した場合は3人以上の場合に機能します。私は最も近い攻撃だけが欲しいのですが、最も遠い敵を除いてすべての敵が攻撃します。3つ以上のスプライトを使用すると、1つが他のスプライトの間にあり、自分の位置をsafePositionとattackPositionにすることができるためだと思いますが、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];
ありがとうございました