Я не совсем понимаю ваш код, но я думаю, что это в основном то, что вы хотите сделать:
CGPoint Temp=CGPointMake(birdImageView.center.x + pos[birdNum].x , birdImageView.center.y + pos[birdNum].y);
if(CGPathContainsPoint(fillPath, nil, [myGameView GetBirdPosition:Temp:i], false)){
[self doDie];
}
Похоже, ваш путь изначально является просто линией, и я не думаю, что что-то будет в ней заключено. Если вы объясните цель более подробно (сколько птиц мы проверяем? Это один и тот же путь для каждой из них?), Мы можем помочь вам в дальнейшем.
Edit:
Хмммм, ок. Первое, что достаточно просто. Чтобы предотвратить заполнение, если какая-либо птица находится на пути, не используйте другой случай. В if, установите флаг, если текущая птица содержится в пути. Затем после цикла, если флаг не установлен, заполните путь. Так что-то вроде:
BOOL pathContainsBird = NO;
for (int i=0; i<[pointsToFillArray count]; i++) {
//bunch of stuff
if(CGPathContainsPoint(fillPath, nil, "What goes here?", false)){
pathContainsBird = YES;
[self doDie];
}
}
if(!pathContainsBird) {
//fill path here
}
Во-вторых, я почти уверен, что вы не делаете правильный выбор. Похоже, вы расширяете путь каждую итерацию, но я думаю, что вы должны сначала построить весь путь, а затем пройтись по всем птицам, но я могу ошибаться.