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