我有一个动态体的球体。我想要通过动画来改变这个球体的尺寸,让它变得更大:
然而,这似乎不起作用。球体因重力下落,但尺寸保持不变。如果我注释掉给球体添加物理引擎的代码,则缩放动画将按预期播放。
这种奇怪的现象甚至在没有动画的情况下也可以观察到。直接改变球体的比例也不起作用:
球体下降但保持半径为1。除非在物理体添加之前缩放了球体。如果是这样,球体的开始缩放为10,然后下降,保持其10的半径。
有趣的是,在动画 supposedly 运行后打印出球体的比例进行进一步检查时,观察到比例确实发生了变化,只不过除非删除物理体,否则看不见:
为什么动态物体的比例无法更改?(请注意,静态和运动学物体可以轻松缩放。)有没有办法实现这一点?
let sphere = SCNNode(geometry: SCNSphere(radius: 1))
scene.rootNode.addChildNode(sphere)
sphere.physicsBody = SCNPhysicsBody.dynamicBody()
sphere.runAction(SCNAction.scaleTo(10, duration: 1))
然而,这似乎不起作用。球体因重力下落,但尺寸保持不变。如果我注释掉给球体添加物理引擎的代码,则缩放动画将按预期播放。
这种奇怪的现象甚至在没有动画的情况下也可以观察到。直接改变球体的比例也不起作用:
let sphere = SCNNode(geometry: SCNSphere(radius: 1))
scene.rootNode.addChildNode(sphere)
sphere.physicsBody = SCNPhysicsBody.dynamicBody()
sphere.scale = SCNVector3(x: 10, y: 10, z: 10)
球体下降但保持半径为1。除非在物理体添加之前缩放了球体。如果是这样,球体的开始缩放为10,然后下降,保持其10的半径。
有趣的是,在动画 supposedly 运行后打印出球体的比例进行进一步检查时,观察到比例确实发生了变化,只不过除非删除物理体,否则看不见:
let sphere = SCNNode(geometry: SCNSphere(radius: 1))
scene.rootNode.addChildNode(sphere)
sphere.physicsBody = SCNPhysicsBody.dynamicBody()
sphere.runAction(SCNAction.scaleTo(10, duration: 1), completionHandler: {() in
println(sphere.scale.x)
sphere.physicsBody = nil
})
为什么动态物体的比例无法更改?(请注意,静态和运动学物体可以轻松缩放。)有没有办法实现这一点?