[]父物体旋转会导致子物体的世界坐标系不正确?(附demo)
一个简单的场景
如果我旋转图中
方框指示的sprite3d的rotation,会导致子物体TargetGuard的transform.position不正确,好像子节点属于的坐标系变动了?
比如说,绳子不旋转的时候,我在代码中动下面圆盘的transform.position
如果我让绳子旋转一点
unity场景和laya工程都在附件中,麻烦帮忙看一下
如果我旋转图中
方框指示的sprite3d的rotation,会导致子物体TargetGuard的transform.position不正确,好像子节点属于的坐标系变动了?
比如说,绳子不旋转的时候,我在代码中动下面圆盘的transform.position
this.block = s.getChildByName("target_root").getChildByName("PendulumCircleTarget").getChildByName("MoveBlockPivot").getChildByName("TargetGuard") as Laya.Sprite3D;能够正确的左右移动
Laya.stage.on(Laya.Event.KEY_PRESS, this, this.KeyPress);
this.pivot = s.getChildByName("target_root").getChildByName("PendulumCircleTarget").getChildByName("MoveBlockPivot") as Laya.Sprite3D;
let newRot = new Laya.Quaternion(0, 0, 0, 0);
Laya.Quaternion.createFromYawPitchRoll(0, 0* (Math.PI / 180), 0, newRot);
this.pivot.transform.rotation = newRot;
..............................................
if (e.keyCode == 97) {
// console.log("a");
let newPos = new Laya.Vector3(this.block.transform.position.x + 0.1, this.block.transform.position.y, this.block.transform.position.z);
console.log(newPos.x);
this.block.transform.position = newPos;
}
else if (e.keyCode == 100) {
// console.log('d');
let newPos = new Laya.Vector3(this.block.transform.position.x - 0.1, this.block.transform.position.y, this.block.transform.position.z);
console.log(newPos.x);
this.block.transform.position = newPos;
}
如果我让绳子旋转一点
this.pivot = s.getChildByName("target_root").getChildByName("PendulumCircleTarget").getChildByName("MoveBlockPivot") as Laya.Sprite3D;这个时候直接操作transform.position的xyz,都是不按照世界坐标系的上下左右来移动,而是一个很奇怪的坐标系:
let newRot = new Laya.Quaternion(0, 0, 0, 0);
Laya.Quaternion.createFromYawPitchRoll(0, 20 * (Math.PI / 180), 0, newRot);
this.pivot.transform.rotation = newRot;
unity场景和laya工程都在附件中,麻烦帮忙看一下
没有找到相关结果
已邀请:
要回复问题请先登录
7 个回复
Aar0n
赞同来自:
LagField
赞同来自:
Laya里面的transform.position是怎么计算来的,如果要看源码能大概说一下在哪个文件里吗
LagField
赞同来自:
这个时候导入Laya,显示的是旋转好的样子,这个时候我不在代码里面做旋转,而是直接改动下面圆盘的transform.position的x,这个时候就能正确左右平移了,这个时候为什么又不是以父节点为坐标系了呢?我有点混乱啊
同样,旋转后的工程在附件
LagField
赞同来自:
unity使用的场景也导出来了,在附件里面
Laya使用的环境版本
Aar0n
赞同来自:
旋转用这行代码 就ok 了 ,就是和unity一样了,你从哪看的那个搞欧拉角的?空间都给扭了
LagField
赞同来自:
LagField
赞同来自: