Если вопрос в заявлении iphone?
-
20-09-2019 - |
Вопрос
Я создаю игру, в которой вы завершаете фигуры, а область заполняется.Однако, если в вашей фигуре есть вражеская птица, она не заполнится.Я хочу сделать так, чтобы, если вы поймаете птицу в своей форме, вы потеряете жизнь.Как я могу написать оператор if, который в значительной степени говорит, что если приведенный ниже код не выполняется, вы теряете жизнь.Если это помогает потерять жизнь, в моем коде это называется doDie.
-(void)fillMutablePath{
CGPoint movePoint = CGPointFromString([pointsToFillArray objectAtIndex:0]);
CGPathMoveToPoint(fillPath, NULL, movePoint.x, movePoint.y);
for (int i=0; i<[pointsToFillArray count]; i++) {
CGPoint tempPoint = CGPointFromString([pointsToFillArray objectAtIndex:i]);
CGPathAddLineToPoint(fillPath, NULL, tempPoint.x, tempPoint.y);
}
CGContextAddPath(gameViewObj._myContext, fillPath);
CGContextFillPath(gameViewObj._myContext);
CGPathRelease(fillPath);
[pointsToFillArray removeAllObjects];
}
if(fillMutablePath doesn't take place when making a shape){
[self doDie];
}
Как я уже сказал выше, причина, по которой fillMutablePath не произойдет, заключается в том, что птица окажется в ловушке внутри фигуры.Любая помощь приветствуется!!
Решение
Я не совсем уверен, как и где проверить, есть ли птица на пути.я думаю что прямо перед заполнением ваш путь, который вы должны сделать (см. это if-else):
-(void)fillMutablePath{
CGPoint movePoint = CGPointFromString([pointsToFillArray objectAtIndex:0]);
CGPathMoveToPoint(fillPath, NULL, movePoint.x, movePoint.y);
for (int i=0; i<[pointsToFillArray count]; i++) {
//...
}
CGContextAddPath(gameViewObj._myContext, fillPath);
if(CGPathContainsPoint(fillPath, nil, bird.center, false)){
[self doDie];
}
else {
CGContextFillPath(gameViewObj._myContext);
}
CGPathRelease(fillPath);
[pointsToFillArray removeAllObjects];
}
Если птица окажется на пути, умрет.В противном случае рисуйте.
Изменить после разъяснения:
//...
CGContextAddPath(gameViewObj._myContext, fillPath);
CGContextFillPath(gameViewObj._myContext);
if(CGPathContainsPoint(fillPath, nil, bird.center, false)){
[self doDie];
}
CGPathRelease(fillPath);
[pointsToFillArray removeAllObjects];
}
Другие советы
Может ли метод не возвращать BOOL?
Таким образом, если птица находится в форме, метод возвращает «да», а если птица не в форме, он возвращает «нет».
Затем вы можете использовать возвращаемое значение в if позже.