JMS03 Ответов: 1

Как заставить мяч отскакивать от стенок холста?


Я хочу, чтобы шар(эллипс) подпрыгивал вокруг всех четырех стен холста, и когда это происходит, я также хотел бы изменить цвет шара и скорость после каждого отскока(случайным образом, конечно). Спасибо за помощь!

Что я уже пробовал:

Это код, который я пробовал. Он перемещает мяч по оси x слева направо, но не останавливается на обратном пути справа налево. Я также не знаю, как заставить его отскакивать от верхней и нижней сторон
// The position of the ball
var x = 25;

// How far the ball moves every time
var speed = 3;
 
var draw = function() {
    background(47, 222, 126);
   
    fill(48, 46, 48);
    ellipse(x, 200, 50, 50);
 
    // Moves the ball
    x = x + speed;
    
    if (x > 375) {
        speed = -5;
        
    if (x < 214) {
        speed = 5;
        }
    }
};

1 Ответов

Рейтинг:
0

W∴ Balboos, GHB

Ваш шар имеет скорость как в x, так и в y направлениях. Если нет, то он будет просто ходить туда-сюда. Горизонтально (только x) или вертикально (только y). Предположим, у вас есть и то, и другое. Ваш пример, приведенный выше, меняет только "x" - так что же, по-вашему, произойдет в направлении y ? ? ?

Всякий раз, когда вы определяете удар со стеной, вам нужно учитывать законы физики (упругое столкновение: 100% сохранение кинетической энергии).

Если ударят по вертикальной стене:
- горизонтальная скорость обращена на 100%
- вертикальная скорость не меняется

Если ударяется горизонтальная стена:
- горизонтальная скорость не меняется
- вертикальная скорость обращена на 100%


А теперь начинайте кодировать.