Я создаю симулятор COVID-19, где каждый круг в симуляции - это человек. Когда два человека бьют друг друга, я хочу, чтобы направление, в котором они «отскакивали» друг от друга, было случайным. В настоящее время я просто отражаю текущую скорость, что означает, что люди следуют по заранее определенному пути, даже когда подпрыгивают друг от друга.
Это моя функция "перемещения"
move() {
if (this.willMove) {
this.xPos += this.xSpeed;
this.yPos += this.ySpeed;
}
}
Это где я делаю свое обнаружение столкновений
collision(other) {
let distance = dist(this.xPos, this.yPos, other.xPos, other.yPos);
if (distance < this.personRadius + other.personRadius) {
this.changeDirection();
return true;
} else {
return false;
}
}
Вещи, управляющие изменением направления:
changeDirection() {
this.mirrorXSpeed();
this.mirrorYSpeed();
}
mirrorXSpeed() {
this.xSpeed = this.xSpeed * -1;
}
mirrorYSpeed() {
this.ySpeed = this.ySpeed * -1;
}
Я попытался умножить скорость на -0,95, но это только уменьшает скорость.
Полный проект можно найти здесь: https://github.com/perkynades/Simulation-of-COVID19/tree/part1