父子物体中,自身坐标系与世界坐标系的区别

最近做题正好遇到了这样的问题,移动,或旋转,或缩放物体时,如何判断使用自身坐标系,还是世界坐标系。

因此特意写了一个小例子测试了下,自身坐标系到底受哪些因素影响。

创建两个物体,为其建立父子物体关系。

分别针对父物体旋转90度,子物体旋转90度,两者均旋转90度以及初始化状态的四种情况下,让父子物体按照transform.forward向量,各自在Center.World(世界坐标系)和Center.Self(自身坐标系)下进行移动。

观察两个物体的运动趋势,实验如下:

以上表格观察不难得出,在四种情况中,父物体出现了两种结果,而子物体出现了四种结果。

因此可以判断处于父子关系最顶层的物体,其自身坐标系的改变,仅受自身的位置、旋转改变的影响。

而处于父子关系下层的物体,除受自身的位置、旋转改变的影响外,还受父物体(们)的影响。

再次总结下:

最后再记录下心得:

1.子物体的Inspector视窗中显示的Transfrom属性,实际均为local属性(localPosition、localRotation、localScale)

2.在缩放有父子关系的物体群组时,物体之间的间距也会随之缩放

时间: 2024-08-25 14:14:10

父子物体中,自身坐标系与世界坐标系的区别的相关文章

关于Unity中物体分别在本地和世界坐标系对应方向的移动

方向 Vector3可以定义以世界坐标轴为参考的三维矢量,Vector3.forward,Vector3.up,Vector3.right方别对应物体世界坐标系的Z,Y,X轴方向的单位向量,或者叫三维单位方向向量,是矢量 this.transform.forward,this.transform.up,this.transform.right分别对应当前物体在本地坐标系的Z,Y,X轴方向的单位向量,或者叫三维单位方向向量,是矢量 距离 Update(){ float distance = thi

【Cocos2d-x游戏开发】浅谈游戏中的坐标系

无论是开发2D还是开发3D游戏,首先必须弄清楚坐标系的概念.在Cocos2d-x中,需要了解的有OpenGL坐标系.世界坐标系和节点坐标系.  1.UI坐标系 IOS/Android/Windows SDK中通用的UI坐标系默认起点坐标(x=0,y=0)位于坐上角,x轴从屏幕最左边开始,由左向右逐渐增加:Y轴坐标从屏幕最上方开始,由上至下逐渐增加,如图所示: UI坐标系又被称为纹理坐标系,在Cocos2d-x中,只有从纹理截取部分矩形时才使用这个坐标系,例如Sprite的TextureRect属

OpenGL中各种坐标系的理解[转]

OPENGL坐标系可分为:世界坐标系和当前绘图坐标系. 世界坐标系:在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 0),且是始终不变的.你面对 屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴.长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1),即屏幕左下角坐标为(-1,-1),右上角 坐标为(1,1). 当前绘图坐标系:是绘制物体时的坐标系.程序刚初始化时,世界坐标系和当前绘图坐标系是重合 的.当用glTranslatef(),glScalef(),

cocos2d-x 中的坐标系

cocos2d-x 中的坐标系是笛卡尔坐标系,向右为 x 轴正方向,向上为 y 轴正方向,以像素为单位 原点在屏幕左下角的坐标系叫世界坐标系,是整个游戏中的根基,直接添加到场景中的节点,设置的位置都是指世界坐标系,getPosition 返回的都是世界坐标系 每个节点都可以当做一个坐标系,节点坐标系的原点位于其内容的左下角,节点添加子节点时, 子节点设置的位置,按照父节点的坐标系,当父节点的坐标变化时,子节点也做相同的变化,即子节点相对父节点不变:节点坐标系是坐标系中的坐标系,分析某个节点坐标一

关于天文中的坐标系的介绍

(欢迎我们天文理科人龙年第一贴. 坐标系是物理学里最基础,最重要, 可能也是最难的概念之一. 而在天文学中,包括天体物理和天体力学,坐标系则更为直接和重要,可以说是天文基础研究中的基础. 还有很多同学是从其它专业转到天文领域,或者对天文领域有一些兴趣,但是没有进行过天文基础的系统学习. 在不同坐标系统之间的变换,很容易出错,而且出错的话会弄大笑话. 我也曾经犯过按照B1950的坐标来测J2000的源表的错误,当测一个发射很强的源却发现是non-detection, 的这时候才意识到这种低级错误,

Halcon中的坐标系特点及XLD的镜像转换

我们知道,Halcon中的坐标系的原点在左上角,而一般二维平面坐标系的原点在左下角.那么Halcon中坐标系和一般的二维坐标系有什么区别你?我通过下面这个例子来分析. 1 gen_image_const (Image, 'byte', 512, 512) 2 dev_set_draw ('margin') 3 4 *点1 5 gen_circle (Circle1, 10, 10, 3) 6 disp_message (3600, '(10 ,10)', 'image', 2, 18, 'whi

Cocos2d-x中的坐标系

绘图坐标系.它是最常见的坐标系,与OpenGL采用的坐标系相同,以左下角为原点,向右为x轴正方向,向上为y轴正方 向,如图 3-1 所示.在 Cocos2d-x 中,一切绘图相关的操作都使用绘图坐标系,如游戏元素中的 Position 和 AnchorPoint 等属性. 纹理坐标系.纹理坐标系以左上角为原点,向右为x轴正方向,向下为y轴正方向,如图3-2所示.在Cocos2d-x中,只 有从纹理中截取部分矩形时才使用这个坐标系,如 CCSprite 的 TextureRect 属性. 简单地接

【java&c++】父子类中同名函数的覆盖问题

java和c++两门语言对于父子类中同名函数具有不同的处理方式. 先上两段代码: C++: class Basic { public: void test(string i){ cout << "basic str" <<endl; } void test(int i){ cout << "basic" <<endl; } }; class Senior : public Basic { public: void te

遍历所有子物体中renderer(渲染器)中的material(材质)并改变其alpha值实现若隐若现的效果

using UnityEngine;using System.Collections;using UnityEngine.UI; public class CubeControl : MonoBehaviour{ public GameObject Cube; private float rotaSpeed=5f; void Update () { //得到所有可渲染的子物体 Renderer[] rds = Cube.GetComponentsInChildren<Renderer>();