Я делаю шутер с видом сверху в Unity, выполнил сценарии «движение» и «посмотрите на мышь», и игрок нормально поворачивается лицом к мыши, но затем я применил Vector2.Lerp чтобы немного сгладить вращение, и теперь, когда вращение игрока по оси Z (игра ведется по оси xy) достигает 0, игрок поворачивается на 360 градусов в другую сторону от отметки 0 градусов и продолжает отслеживать мышь до тех пор, пока мышь снова опускается ниже отметки 0 градусов, и игрок снова делает ход.
Я действительно не знаю, почему это происходит. Вот код ротации игроков:
Код: Выделить всё
void FixedUpdate(){
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
Vector2 lookDir = mousePos - rb.position;
float currentAngle = rb.rotation;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
float smoothedAngle = Mathf.Lerp(currentAngle, angle, rotationTime);
if(canAim==true){
rb.rotation = smoothedAngle;
}
}
Первая строка предназначена для перемещения, следующая — для вращения. Мне очень хочется плавного вращения, но я не могу понять, как это сделать, чтобы не появлялось это странное вращение!
Вот я сделал GIF, он точно показывает, в чем проблема.
Вот я сделал GIF, он точно показывает, в чем проблема.
п>
Подробнее здесь:
https://stackoverflow.com/questions/603 ... -the-mouse