Почему этот код перемещает мой gameobject таким странным образом?

#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);