Я предполагаю, что у вас есть переменная с именем xspeed
, которая управляет скоростью перемещения мяча влево или вправо.
Есть две основные вещи, которые делают игры типа понг.
- Просто инвертируйте скорость y, как вы делаете (в действительности).
- Инвертируйте скорость y, но также изменяйте скорость x в зависимости от того, куда на этой «летучей мыши» ударил мяч. то есть удар по мячу в крайнем правом положении заставил бы его отскочить вправо.
Для варианта 2 вы можете либо A) установить xspeed напрямую в зависимости от того, как далеко от середины попадет мяч, либо B) вы можете добавить / вычесть xspeed в зависимости от того, как далеко от середины находится шар.
var relativemidpoint = (ball.left + ball.width/2) -
(paddle.left + paddle.width/2);
// Option A
xspeed = relativemidpoint / 10; // or some other constant
// Option B
xspeed += relativemidpoint / 10; // or some other constant
Возможно, вы также захотите ограничить скорость xspeed, чтобы она не была слишком быстрой в сторону.
Если вы хотите, чтобы общая скорость была постоянной, вам придется масштабировать yspeed
в зависимости от значения xspeed
.