У меня, похоже, странная проблема с 2D-игрой, над которой я работаю. Чтобы определить, попадает ли мой игровой спрайт на платформу, я сначала делаю оператор if, проверяющий CGRectIntersectsRect, и как только я определил, что спрайт-плеватель и спрайт платформы пересекаются, я затем проверяю, чтобы точка центра (плюс половина высота игрока) выше платформы, если это так, я устанавливаю скорость игрока «y» на ноль.Обнаружение столкновений в OpenGL ES на iPhone
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)];
Большую часть времени этот код работает над игровой цикл, однако каждый сейчас и потом, то второй «если заявление» не принимается во внимание, и мой игрок спрайт проходит через платформу. Я создаю эту игру в OpenGL ES 1.1 с помощью специального класса спрайтов.
Любое понимание этой проблемы было бы оценено!
Какая точка '' [player getPosition] 'дает вам? Верхний левый? Центр? Как насчет 'p.position'? –
Они оба дают центр. – Scott