Не понимаю TransformDirection в Unity

Допустим у нас есть куб в нулевых координатах сцены. Я изменяю его позицию, чтобы он сдвинулся вперед на 10 единиц:

transform.position = new Vector3(x, y, 10);

Когда я поверну куб на 45 градусов и снова сдвину его на 10 единиц по оси z, он точно так же сдвинется относительно координат сцены, то есть глобальных координат, он не сдвинется в направлении своей z. Однако же, использование TransformDirection означает преобразование значений вектора из локальных в глобальные:

Vector3 direction = new Vector3(x, y, z); Vector3 worldDirection = transform.TransformDirection(direction); transform.position += worldDirection;

И теперь, если я поверну куб на 45 градусов, то сдвинется он уже относительно своей оси z, так в чем же логика? Получается ведь наоборот, если я не использую TransfromDirection, то объект сам по-себе по дефолту движется по глобальной оси z, а использование TransfromDirection наоборот заставляет объект двигаться по своим собственным координатам.

6 комментариев