Вопрос

Я создаю игру, в которой вы завершаете фигуры, а область заполняется.Однако, если в вашей фигуре есть вражеская птица, она не заполнится.Я хочу сделать так, чтобы, если вы поймаете птицу в своей форме, вы потеряете жизнь.Как я могу написать оператор 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 позже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top