Квадратное обнаружение столкновений iPhone - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть эта игра, в которой мне нужно знать, ударил ли мяч по стене сбоку (отскочить назад по оси x) или сверху (отскочить назад по оси y, как отскок наземля).Они отлично работают по отдельности, но когда я раскомментирую их обоих, это не сработает.(Я думаю, это потому, что код «перекрывается»?).Во всяком случае, вот код, и любая помощь фантастическая:

if (CGRectIntersectsRect(guy.frame, wall_01.frame)) {
            if (guy.frame.origin.y+guy.frame.size.height >= wall_01.frame.origin.y && guy.frame.origin.y <= wall_01.frame.origin.y+wall_01.frame.size.height) {
                iJump *= kRestitution;
            }
            if (guy.frame.origin.x+guy.frame.size.width >= wall_01.frame.origin.x && guy.frame.origin.x <= wall_01.frame.origin.x+wall_01.frame.size.width) {
                jJump *= kRestitution;
            }
        }

1 Ответ

1 голос
/ 19 апреля 2011

при условии, что стена находится на левой стороне, а y увеличивается сверху вниз

CGFloat leftWall = someXPosition;
CGFloat ground = someYPosition;


CGFloat ballLeft = CGRectGetMinX(guy.frame);
CGFloat ballRight = CGRectGetMaxX(guy.frame);
CGFloat ballBottom = CGRectGetMaxY(guy.frame);

if (ballLeft <= leftwall && ballBot >= ground){
   //ball hit corner ?

} else if (ballLeft <= leftWall){
   //passed or touched wall

} else if (ballBot >= ground){
   //passed or touched ground
}
...