UNITY 复制对象后局部坐标和世界坐标的变化问题
void Start () {
var pgo = transform.Find ("Button").gameObject;
obtn = Instantiate (pgo);
//obtn = Instantiate (pgo, pgo.transform.Parent);
var pos = obtn.transform.position;
//obtn.transform.localPosition = Vector3.zero;
Debug.LogFormat ("1:{0},{1},{2}", pos.x, pos.y, pos.z);
pos = obtn.transform.localPosition;
//obtn.transform.localPosition = Vector3.zero;
Debug.LogFormat ("2:{0},{1},{2}", pos.x, pos.y, pos.z);
obtn.transform.SetParent (pgo.transform.parent);
obtn.name = "cpobj";
}
1,复制对象是将原来对象原封不会的拷贝一份。
2,复制后得到的对象没有父结点,因此其世界坐标和局部坐标一样,局部坐标又和原对象局部坐标一样。
因此,复制得到的对象的局部坐标成为了世界坐标。
3,setparent不会改变物体的世界坐标,这符合直观感受。
那么,为了保证不改变物体的世界坐标,在设置了父结点后,物体的局部坐标就会发生改变。
简单来说:结点P下有一个子结点A,复制A得到B,设置B的父结点也为P,这时A与B并不会在相同的位置。
B的世界坐标为A的局部坐标的数值。这就是以上三条规则导致的。
或者:使用obtn = Instantiate (pgo, pgo.transform.Parent);在复制时直接指定父结点,这样复制得到的对象就和原对象在同一位置了。
最新文章
- [Python] from scipy import sparse 报 DLL load failed:找不到指定模块错误
- 1.Maven的安装以及本地仓库的配置
- 【学】React的学习之旅4-添加事件(onChange)
- [WinAPI] API 3 [获取系统目录,并保存在文件里]
- Scrum会议1(Beta版本)
- html5+css3
- 深入理解Java内存模型(七)——总结
- 流弊博客集锦(updating)
- POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心
- 使用Comparable接口的小例子
- Java发送HTTP POST请求(内容为xml格式)
- linux下安装node
- ThinkPhp_5框架开发【指导】
- 苹果ios系统无法通过RD Client连接win10服务器远程错误0x00001307
- 【python游戏编程04--加载位图与常用的数学函数】
- MySql之插入操作
- 转发:查看centos中的用户和用户组
- unigui编译路径设置
- InnoSQL HA Suite的实现原理与配置说明 InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync replicaiton)的功能 MySQL 5.6支持了crash safe功能
- android 打开 res raw目录 中 数据库文件