Поворот объекта за мышкой по оси z
У меня проблема я не могу найти решение. У меня игра 3д но с видом сбоку и я хотел сделать так чтоб оружие следило за курсором, но перепробовав куча вариантов ничего не выходило, то объект улетал, то просто стоял на месте. Может кто то сможет помочь? Последний вариант решил сам сделать с помощью lookAt { private Vector3 mousePosition;
void Update () {
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.LookAt(mousePosition);
}
Ответы (1 шт):
Автор решения: Just Someone
→ Ссылка
протестив твой код, пришёл к выводу, что ScreenToWorldPoint просто не подходит в этом случае.
Думаю, лучше использовать такой код:
public Camera Camera;
void FixedUpdate()
{
transform.LookAt(Camera.ScreenPointToRay(Input.mousePosition).GetPoint(0));
}
Теперь объясню код:
- Для действий с перемещениями и др. лучше использовать
FixedUpdate, т.к. он вызывается раз в фиксированое количество времени, тогда какUpdate— каждый кадр. transform.LookAt(Camera.current.ScreenPointToRay(Input.mousePosition).GetPoint(0));Тут мы поворачиваем объект (transform.LookAt) к точке попадания луча (.GetPoint(0)) который получаем от положения мыши (Camera.current.ScreenPointToRay(Input.mousePosition))
Важно указать камеру, от которой будем считать точку попадания, в скрипте в инспекторе.
А и твоя private Vector3 mousePositon теперь не нужна.