Как организовать движение в сторону курсора в Unity3d?

Есть задача: объект должен двигаться по направлению курсора.
В Update() есть такая строка, которая отвечает за вращение объекта с помощью мыши:
float h = horizontalSpeed * Input.GetAxis("Mouse X");
transform.Rotate(0, h, 0);
Вопрос: как направлять объект под углом, который мы получаем с помощью мыши?
  • Вопрос задан
  • 9705 просмотров
Решения вопроса 2
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
С помощью Camera.ScreenPointToRay находите луч от камеры по направлению клика. Потом находите точку на земле с помощью Physics.Raycast. Далее берёте вектор направления в эту точку:
Vector3 toPoint = raycastHit.point - transform.position;

Чтобы найти вращение берёте Quaternion.LookRotation и передаёте в него toPoint. Имейте в виду, что этот вектор может выходить за плоскость XZ, поэтому перед использованием его нужно спроецировать на плоскость и нормализовать.
toPoint.y = 0;
toPoint.Normalize();

Если вектор был близок по направлению к оси Y, то после проецирования он может оказаться равен нулю. Quaternion.LookRotation будет на это ругаться, поэтому лучше вставить проверку toPoint == Vector3.zero.
Ответ написан
Комментировать
Думаю вам следует почитать тут. Все уже готово в самом Unity и изобретать велосипед не имеет смысла(разве что ради эксперемента). Тут учитыватся преграды, перемещение других юнитов, вообще все что нужно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
transform.Translate(transform.forward);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы