У меня есть пуля, которая стреляет под углом.Я хочу, чтобы пуля реагировала на гравитационную силу.Следующий код находится в функции обновления пули.
this.pos.x += Math.cos(this.angle * Math.PI/4) * (this.vel.x);
this.pos.y += Math.sin(this.angle * Math.PI/4) * (this.vel.y);
Это означает, что пуля была выпущена в this.angle
, которая не должна меняться.Скорости всегда должны находиться под углом this.angle
.Теперь возникает вопрос: как мне добавить гравитацию?Вот то, что я пробовал до сих пор.
Следующий код просто изгибает пулю (вниз, но также вверх).
this.pos.x += Math.cos(this.angle * Math.PI/4) * (this.vel.x);
this.pos.y += Math.sin(this.angle * Math.PI/4) * (this.vel.y);
this.vel.y += GRAVITY
Я также пробовал это:
this.pos.x += Math.cos(this.angle * Math.PI/4) * (this.vel.x);
this.pos.y += Math.sin(this.angle * Math.PI/4) * (this.vel.y);
this.vel.y += Math.sin(this.angle * Math.PI/4) * GRAVITY
Последнее самое близкое, что я получил к тому, что я хочу, чтобы он делал.Однако, когда this.angle
равно 0, sin(0) is also 0
.Это приводит к странному неправильному поведению снаряда, когда угол равен 0.
Каковы лучшие / обычные обходные пути для этого?