Unity子物体在父物体中的位置、子物体脱离父物体在世界坐标系的位置,关系???

Catherinexj 2015-08-04 09:42:48
物体A的Scale为(1,1,1)Position为(0,0,0),物体B的Scale为(1,1,1)Position为(1,1,1),当A变为B的子物体后A的Position变为(-1,-1,-1),这个很容易理解。
但是当我把物体B的Scale变为(2,2,2)其余内容全部不改变,再将A作为B的子物体,这是A的Position变为(-0.5,-0.5,-0.5),这是为什么呢?我理解不了是我觉得无论A、B是多么不规则,A、B的Position都是A、B的中心点,为什么父子物体的Position变换还与物体的Scale有关呢?
...全文
13789 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkk23456 2017-02-15
  • 打赏
  • 举报
回复
3楼说的好像挺有道理,5楼讲的也对。 直观上理解,scale表示缩放。不仅仅只是物体大小发生了变化,物体自身坐标系表示的长度也发生的变化。父物体的scale变为(2,2,2)后,父物体坐标系中在x,y,z三个方向表示的长度都发生了变化。 即 在三个维度上 在父物体坐标系中的1长度 = 世界坐标系中的 2 长度, “因此A的Position变为(-0.5,-0.5,-0.5)”,这个-0.5是父物体坐标系中的长度,按照比例换算,在世界坐标系中的长度为-1.0。 如果父物体的scale为(2,1,1),即表示只在x轴方向有缩放,那么A的Position应该变为(-0.5,-1,-1)。
glunoy 2016-08-31
  • 打赏
  • 举报
回复
逮住女程序员一只。好久不来CSDN了。。。 割================================ 楼主的理解是错误的。不是说缩放了以后物体的中心点变了。不信你把B放0,0,0 对他缩放2,把A放上去,依然是你看到的结果。 所谓的坐标系,坐标系的转换。以及为什么B缩放了2倍以后 A放上去变成缩放值0。5。 这是因为为了保持坐标变换时,物体不会因为改变父子关系而移动,unity会转换这个过程。好吧,这都是废话。但是由于这个初衷,所以为了让他看起来一致,所以是这样的: 我先解释缩放值:物体最终表现 = 父物体的转换矩阵之积。 所以1= 2*0.5. 那么所谓的坐标为什么变成0.5 0.5 0.5呢.还是之前的初衷导致的。因为父子关系的变更,物体的坐标要从世界坐标转换到父物体的相对坐标。这个相对坐标 是以原先物体之间在世界坐标的距离决定的。一个位置Q1,1,1的物体 和一个0,0,0位置的物体E 他们之间距离永远是根号3。但是位置1,1,1的物体放大2倍以后,物体最终位置 = 父物体的转换矩阵之积。这时候为了要让E相对A不变,所以E只好变成0。5 0。5 0。5
meizhaogod 2016-08-19
  • 打赏
  • 举报
回复
怎么解决的呢?
廿五 2016-03-10
  • 打赏
  • 举报
回复
是不是可以理解为当B的scale变成2之后,它的物体坐标系也被拉伸了2倍
Catherinexj 2015-08-04
  • 打赏
  • 举报
回复
好吧,,貌似我自己的问题自己解决了 物体A变为物体B后,不仅大小发生了成比例的变化,而且在B的坐标系中的位置也会与最初A在世界坐标系中的位置不一样,也就是看似A物体没有动,其实A中心点的位置已经变化了,成为B的子物体之后,A的世界坐标系就变成了B。 这是我自己的理解,不知道对不对,还希望看到这个问题的大神能帮忙解决一下。小女子在此先献上十万分的感谢。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧