Кажется, у меня странная проблема с 2D-игрой, над которой я работаю. Чтобы определить, приземляется ли спрайт моего игрового персонажа на платформу, я сначала выполняю оператор if, проверяющий CGRectIntersectsRect, и как только я определил, что спрайт игрока и спрайт платформы пересеклись, я затем проверяю, чтобы центральная точка (плюс половина высота игрока) находятся над платформой, если это так, я устанавливаю скорость игрока 'y' на ноль.
playerVelocity.x=5;
playerVelocity.y+=gravity;
if (CGRectIntersectsRect([turtle getBounds], [platform getBounds])) {
if ([player getPosition].y>p.position.y+([player getBounds].size.height/2)) {
if (playerVelocity.y>0) {
playerVelocity.y=0;
inJump=NO;
}
}else {
inJump=YES;
}
}
[player setPosition:CGPointMake([player getPosition].x+playerVelocity.x, [player getPosition].y-playerVelocity.y)];
Большую часть времени этот код работает в течение игрового цикла, однако время от времени второй «оператор if» игнорируется, и мой спрайт игрока проходит через платформу. Я создаю эту игру в OpenGL ES 1.1 с собственным классом спрайтов.
Любое понимание этого вопроса будет оценено!
[player getPosition]
? Верхний левый? Центр? А как насчетp.position
? - person Anon.   schedule 07.07.2010