Transform组件
  aIm4e3TeJr90 2023年11月02日 30 0


Transform组件用于控制物体的位置,旋转和缩放,这里面涉及两个重点,一个是坐标系,这个包括局部坐标系和世界坐标系的关系,另外一个是父子节点,GameObject的父子节点关系是通过Transform组件来维护的。


 


位置相关的:


 


5个和位置相关的Vector3类型变量


up 表示世界坐标的Y轴方向


right 表示世界坐标的X轴方向


forward 表示世界坐标的Z轴方向


position 表示对象在世界坐标系中的位置


localPosition 表示对象相对父节点变换的坐标位置


 


void Translate(Vector3 translation, Space relativeTo = Space.Self);


在relativeTo坐标系上,平移translation距离,Space有两个坐标系,Self表示本地坐标系,World表示世界坐标系


 


PS.如果使用Vector3的up, right, forward,就是基于局部坐标系的移动


 


旋转相关的:


 


2个Vector3类型的变量


eulerAngles 在世界坐标旋转作为欧拉角度


localEulerAngles 相对父节点的欧拉角旋转


 


2个Quaternion类型的变量


rotation 在世界坐标系中的旋转角度,是一个Quaternion对象(四元数)


localRotation 相对于父节点的旋转角度


 


void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self) 应用一个欧拉角绕x,y,z轴旋转(根据x,y,z的顺序)


 


void RotateAround(Vector3 point, Vector3 axis, float angle) 按照angle°在世界坐标的point上旋转物体


 


void LookAt(Transform target, Vector3 worldUp = Vector3.up) 旋转物体使forward向量指向target的位置


 


缩放相关的:


 


1个Vector3类型的变量


localScale 相对于父节点的缩放


 


父子节点相关的:


 


parent 变量表示Transform的父节点


 


root 表示它的根节点,如果没有父节点,它会返回自己


 


Transform Find(string name) 根据名字查找子节点


 


bool IsChildOf(Transform node) 判断该Transform是否某Transform的子节点


 


void DetachChildren() 解除所有子节点的父子关系


 


坐标系的转换:


 


TransformDirection 将一个方向从局部坐标系转换到世界坐标系


InverseTransformDirection 将一个方向从世界坐标系转换到局部坐标系


 


TransformPoint 将一个点从局部坐标系转换到世界坐标系


InverseTransformPoint 将一个点从世界坐标系转换到局部坐标系



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

aIm4e3TeJr90