3d对象使用addChild后localPosition没有变化

讲世界中的对象add进某个子节点后localPosition,localScale等都没有发生变化,结果对象移动到诡异的位置去了blob:https://ask.layabox.com/9fe227 ... 55d85
WechatIMG105.png WechatIMG106.png
已邀请:

.磊

赞同来自: 学途

我也遇到了这个问题,排查了很久才发现是laya的addChild()方法的原因。你可以打印下child.transform.position,会发现child.transform.position = child.transform.localPosition + owner.transform.position,导致child发生了位移。
以下是是我验证出来的结果,基于两种不同的思路,这最终还需要官方人员来确认下是否属于bug或是否需要在说明文档中提示用户:
laya引擎:是组件相对位置不变,添加到父对象中,会导致世界坐标变化,就会出现这种情况。
unity:是组件世界坐标不变,添加到父对象中,世界坐标不变,变化的是相对于父对象的localPosition。
 

150*****287

赞同来自:

只能暂时这么解决
/**
* 辅助3D添加对象
* @param owner
* @param child
*/
static addChildHelper(owner: Laya.Node, child: Laya.Sprite3D) {
let position = child.transform.position.clone()
let rotation = child.transform.rotation.clone()
let scale = child.transform.getWorldLossyScale().clone()
owner.addChild(child)
child.transform.position = position
child.transform.rotation = rotation
child.transform.setWorldLossyScale(scale)
}

要回复问题请先

商务合作
商务合作