Глюк XNA Pong

Когда я запускаю это, после того, как мяч приближается к левой ракетке, он либо отскакивает на четверть экрана раньше, ударяется о ракетку, а затем, после того, как мяч немного отходит, он начинает подпрыгивать взад и вперед, как будто он ударяется о стену. Вы видите, что я делаю неправильно (или не делаю того, что должен)?

ballPos — это значение Vector2 для положения шаров. paddleStaticPos.X — это позиция X для ракетки (расположенной в 5 от левой стены). paddlePos.X — это значение Y для левой ракетки.

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

            if (ballPos.X <= paddleStaticPos.X + 15)
            {
                if (ballPos.Y <= paddlePos.X + 25 && ballPos.Y >= paddlePos.X)
                {
                    gameStartpaddleHit = true;
                    lastPaddleHitLeft = true;
                    ballLeft = ballLeft * -1;
                    ballUp = ballUp * -1;
                    soundEffect[0].Play();
                }
            }
            //Sedond Sector(26-100[MIRROR EFFECT])
            int tmp2=ballLeft;
            if (ballPos.X <= paddleStaticPos.X + 15)
            {
                if (ballPos.Y <= paddlePos.X + 99 && ballPos.Y >= paddlePos.X + 26)
                {
                    gameStartpaddleHit = true;
                    lastPaddleHitLeft = true;
                    ballLeft = tmp2 * -1;
                    soundEffect[0].Play();
                }
            }


            //Third Sector(101-125[SHARP ANGLE DEFLECT])
            if (ballPos.X <= paddlePos.X + 15)
            {
                if (ballPos.Y <= paddlePos.X + 125 && ballPos.Y >= paddlePos.X + 100)
                {
                    gameStartpaddleHit = true;
                    lastPaddleHitLeft = true;
                    ballLeft = ballLeft * -1;
                    ballUp = ballUp * -1;
                    soundEffect[0].Play();
                }
            }

Если вы предпочитаете pastebin: http://pastebin.com/K0PitFcQ


person Community    schedule 06.01.2014    source источник


Ответы (1)


Вы тестируете ballPos Y против paddlePos X

if (ballPos.Y <= paddlePos.X + 25 && ballPos.Y >= paddlePos.X)

Разве это не должно быть?

if (ballPos.Y <= paddlePos.Y + 25 && ballPos.Y >= paddlePos.Y)
person Weyland Yutani    schedule 06.01.2014