Я пытаюсь сделать фон холста из случайно движущихся шаров. Шары отскочат, когда они достигнут края. Это должно быть легко, но, видимо, я что-то упустил.
Прямо сейчас, это выглядит довольно неплохо в течение первых нескольких секунд, но через некоторое время эти шары просто не потрудятся пересечь левую границу и никогда не отскочат назад. Я пытался выяснить в течение нескольких дней, и не удалось. Любая помощь приветствуется.
update(delta, canvas) {
let deltaX = delta * Math.cos(this.movingDirection * Math.PI / 180);
let deltaY = delta * Math.sin(this.movingDirection * Math.PI / 180);
this.axisX += deltaX;
this.axisY += deltaY;
//set border
if (this.axisX > (canvas.width)) {
if (this.movingDirection > 270 && this.movingDirection < 360) {
this.movingDirection = 180 + this.movingDirection;
} else if (this.movingDirection < 90 && this.movingDirection > 0) {
this.movingDirection = 180 - this.movingDirection;
}
}
if (this.axisX < 0) {
if (this.movingDirection > 180 && this.movingDirection < 270) {
this.movingDirection = 540 - this.movingDirection;
} else if (this.movingDirection <= 180 && this.movingDirection > 90) {
this.movingDirection = 180 - this.movingDirection;
}
}
if (this.axisY > (canvas.height) || this.axisY < 0) {
if (this.movingDirection > 180 ) {
this.movingDirection = 360 - this.movingDirection;
} else if (this.movingDirection <= 180) {
this.movingDirection = 360 - this.movingDirection;
}
}
this.draw();
}
this.movingDirection - это случайное число от 0 до 360.
Вот полный пример https://jsfiddle.net/calmdown/qr89b034/1/
Спасибо!