假设我们在场景的零坐标中有一个立方体。我更改其位置,使其向前移动 10 个单位:
transform.position = new Vector3(x, y, 10);
当我将立方体旋转 45 度并再次沿 z 轴移动 10 个单位时,它将相对于场景坐标(即全局坐标)以相同的方式移动,它不会沿 z 方向移动。然而,使用 TransformDirection 意味着将向量值从局部转换为全局:
Vector3 direction = new Vector3(x, y, z);
Vector3 worldDirection = transform.TransformDirection(direction);
transform.position += worldDirection;
现在,如果我将立方体旋转 45 度,那么它已经相对于其 z 轴移动,那么逻辑是什么?事实恰恰相反,如果我不使用 TransfromDirection,那么对象本身默认会沿着全局 z 轴移动,而使用 TransfromDirection 则相反,会让对象沿着自己的坐标移动。请澄清我的困惑,因为我在互联网上没有找到这种方法的合理解释。