【发布时间】:2018-12-29 14:41:15
【问题描述】:
我想将给定的scn:SCNNode 和其当前表示节点的转换设置为新值。但是,我在设置演示节点时遇到了麻烦。我尝试了四种方法:
-
设置表示节点的变换:
scn.position = newVal scn.presentation.position = newValscn.presentation.transform是只读 -- 不能设置。 (顺便说一句,设置表示节点的转换编译没有错误,也许需要清理) -
使用resetTransform():
scn.position = newVal scn.physicsBody.resetTransform()什么都不做。文档说它“更新物理模拟中身体的位置和方向以匹配身体所连接的节点的位置和方向”。但它没有改变。不清楚为什么!
-
设置时移除physicsBody:
let pb = scn.physicsBody scn.physicsBody = nil scn.position = newVal scn.physicsBody = pb这会将演示转换设置为 newVal(“是的!”),但物理不起作用(“嘘!”)。也许不能重复使用物理体。
-
设置后添加新的物理体:
scn.position = newVal scn.physicsBody = SCNPhysicsBody(type:.dynamic, shape:nil)可惜,scn.presentation.position 没有 newVal。
想法?
【问题讨论】:
-
我已经了解了一个基本事实,即您不应该更改演示节点中的任何内容。根据第 2 项:resetTransform() 似乎只有在当前线程退出后才会生效。
标签: swift core-animation scenekit