#c# #unity3d
#c# #unity3d
Вопрос:
Мой код
Vector2 moveDirection;
moveDirection = (Sensitive.transform.position - gameObject.transform.position).normalized;
float deg = Mathf.Rad2Deg * Mathf.Atan(moveDirection.x / -moveDirection.y);
if (moveDirection.y < 0) deg -= 180;
Vector3 to = new Vector3(0, 0, deg);
transform.eulerAngles = to;
transform.Translate(new Vector3(moveDirection.x, moveDirection.y) * speed * Time.deltaTime);
В функции update, предназначенной для просмотра и перемещения в Sensitive, хотя она указывает правильно, не перемещается правильно, и я могу понять, почему.
Ответ №1:
transform.Translate
по умолчанию интерпретирует входные данные как локальное направление и расстояние. Вы предоставляете входные данные в world direction amp; distance, поэтому вам следует использовать необязательный 2-й параметр и указать Space.World
:
transform.Translate(new Vector3(moveDirection.x, moveDirection.y)
* (speed * Time.deltaTime), Space.World);