加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 旋转后如何在SceneKit中获取子节点的实际位置?

发布时间:2020-12-16 03:45:22 所属栏目:百科 来源:网络整理
导读:我正在使用SceneKit开发一个场景.我有一个带有子节点的主节点: // Main nodeSCNNode* planet = [SCNNode node];planet.geometry = [SCNSphere sphereWithRadius:2];planet.position = SCNVector3Make(0,-3,5);// sub-nodeSCNNode* satellite = [SCNNode nod
我正在使用SceneKit开发一个场景.我有一个带有子节点的主节点:
// Main node
SCNNode* planet = [SCNNode node];
planet.geometry = [SCNSphere sphereWithRadius:2];
planet.position = SCNVector3Make(0,-3,5);
// sub-node
SCNNode* satellite = [SCNNode node];
satellite.geometry = [SCNSphere sphereWithRadius:0.4];
satellite.position = SCNVector3Make(4,0);
[planet addChildNode:satellite];
[scene.rootNode addChildNode:planet];

我使用NSTimer来制作一些动作和一些动画.在计时器事件中,我这样做:

planetRotation = 0.1;
planet.rotation = SCNVector4Make(0,1,planetRotation);

但是,如果我试图获得卫星节点的位置,我总是得到相同的值.
我试图让位置节点知道卫星节点的真实位置,但没有任何变化.

当我改变父节点的旋转时,如何获得子节点的实际位置?

提前致谢

解决方法

节点的位置以其父坐标系表示.就像UIKIt / AppKit中的视图一样.如果更改视图的框架,则其子视图的框架不会更改.

你想要的是我们称之为子节点的世界变换(即它在场景的根节点的坐标系中表示的变换).

你可以看看worldTransform-convertPosition:toNode:.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读