Отложенное вращение в скрипте мышиного взгляда в Unity - PullRequest
0 голосов
/ 28 сентября 2018

Предполагается, что мой объект смотрит на мышь, вместо этого он смотрит сзади.

Мой код:

var dir = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);
var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

Он выглядит так: enter image description here

(мне пришлось нарисовать мышь, потому что инструмент фотографии, который я использую, не помещает мышь)

Есть ли способ заставить его смотреть прямо на нее, а не всякий раз, когда я двигаюсьмышь за этим стоит?И если вы используете другой метод, не могли бы вы объяснить, почему мой метод не работает, а также указать, почему ваш метод работает?Однако я бы предпочел сохранить тот же метод.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Попробуйте добавить 90 градусов или 45, чтобы исправить вращение.

0 голосов
/ 28 сентября 2018

Попробуйте использовать Transform.LookAt , все, что вам нужно сделать, это передать ему позицию, с которой вы хотите, чтобы объект столкнулся.

Ваш код будет выглядеть примерно так:

public void Update {
     Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
     transform.LookAt(mousePos);
}

Если вы хотите, чтобы объект поворачивался, а не смотрел вверх / вниз, оставайтесь там, где ваш объект смотрит на то же значение y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...