Простое столкновение с мячом - PullRequest
0 голосов
/ 04 апреля 2011

Есть шар UIImage и весло UIImage.

столкновение работает нормально, когда мяч ударяется о верхнюю и нижнюю стороны, но если он касается малых сторон весла, мяч проходит через него и подпрыгивает в весле и выходит.

if (CGRectIntersectsRect(ball.frame, racquet_green.frame))
{
      ballVelocity.y = -ballVelocity.y;
}   

Скажите, пожалуйста, какие-нибудь предложения или любые другие методы проверки столкновений. Это простая проблема с мячом

Примечание: это явно происходит, когда мяч ударяется о прямоугольную лопасть под углом 45 градусов.

1 Ответ

0 голосов
/ 04 апреля 2011

Это, вероятно, работает так, потому что: когда шар летит сбоку, за один шаг моделирования до столкновения он находится под вершиной весла, но id еще не сталкивается, потому что его координата X слишком мала (или слишком велика).

Затем происходит следующий шаг симуляции, и шар сталкивается с веслом, поэтому его скорость у меняется на противоположную, но скорость х остается такой же, поэтому шар уходит дальше в весло.

Затем происходит следующий шаг симуляции, и мяч все еще находится внутри ракетки, поэтому его скорость у меняется на противоположную, но скорость х не изменяется, поэтому он идет дальше в ракетку, но подпрыгивая вверх и вниз по пути.

Решение - проверьте наличие столкновения с вертикальными и горизонтальными краями лопасти.

...