Предыстория: у меня есть JavaScript-игра с высоты птичьего полета, где игрок управляет космическим кораблем, касаясь круга - например, коснитесь слева от центра круга, и корабль будет двигаться влево, коснитесь верхнего правого края и он переместится в верхний правый угол и т. д. Чем дальше от центра круга псевдо-джойстика, тем больше скорость в этом направление. Тем не менее, я не регулирую скорость корабля напрямую, а устанавливаю значения targetSpeed.x и targetSpeed.y, и тогда корабль будет регулировать свою скорость, используя что-то вроде:
if (this.speed.x < this.targetSpeed.x) {
this.speed.x += this.speedStep;
}
else if (this.speed.x > this.targetSpeed.x) {
this.speed.x -= this.speedStep;
}
... и то же самое для скорости y, и speedStep - это небольшое значение, чтобы сделать его более плавным и не слишком резким (корабль не должен двигаться из быстрого левого направления в непосредственное быстрое правое направление).
Мой вопрос: используя приведенный выше код, я считаю, что скорость будет регулироваться быстрее в диагональных направлениях и медленнее вдоль горизонтальных / вертикальных линий. Как я могу исправить это, чтобы иметь равную целевую скорость после?
Большое спасибо за любую помощь!