区别
每个游戏对象都有一个自身坐标系和一个世界坐标系。
自身坐标系是相对于游戏对象本身的坐标系,而世界坐标系是相对于场景的坐标系。
自身坐标系是相对于游戏对象本身的坐标系。它以游戏对象的中心点作为原点,以游戏对象自身的前后左右和上下方向作为坐标轴。自身坐标系的x、y、z轴是相对于游戏对象自身的,因此当游戏对象旋转时,自身坐标系的轴也会跟着旋转。
世界坐标系是相对于场景的坐标系。它以场景的某个点(例如场景的中心点)作为原点,以一个固定的方向(通常是向上的方向,也称为“上轴”)作为y轴,以场景的水平面上的一个方向作为x轴,再从这两个轴计算出z轴。所有游戏对象都使用相同的世界坐标系。
在Unity中,游戏对象的位置和旋转都是相对于世界坐标系的,但是一些属性,例如游戏对象的缩放和一些碰撞体积,是相对于自身坐标系的。因此,当你改变一个游戏对象的位置和旋转时,它的自身坐标系也会随之改变,但是世界坐标系不会改变。
总之,自身坐标系是相对于游戏对象本身的坐标系,而世界坐标系是相对于场景的坐标系。它们之间的区别是自身坐标系随着游戏对象的旋转而变化,而世界坐标系保持不变。
那么,自身坐标系转换世界坐标系的作用是什么?
在Unity中,自身坐标系转换成世界坐标系可以用于解决一些问题,
例如:
获取游戏对象在场景中的绝对位置:当你需要知道一个游戏对象在场景中的绝对位置时,你需要将它的自身坐标系转换成世界坐标系。这个操作可以通过GameObject类的Transform组件来完成。
将游戏对象的位置和旋转转换到另一个坐标系:有时候你需要将一个游戏对象的位置和旋转转换到另一个坐标系中,例如你可能需要将一个相机的位置和旋转转换到UI坐标系中,以便正确地渲染UI。这个操作同样可以通过Transform组件的方法来实现。
碰撞检测:当你进行碰撞检测时,有时需要将碰撞器的位置和大小从自身坐标系转换成世界坐标系,以便能够正确地检测它与其他物体的碰撞。
Comments | NOTHING