当前位置 : 主页 > 手机开发 > 其它 >

swift – SceneKit不会缩放动态体

来源:互联网 收集:自由互联 发布时间:2021-06-11
我有一个充满活力的球体.我想动画这个球体的比例,使它的大小增加: let sphere = SCNNode(geometry: SCNSphere(radius: 1))scene.rootNode.addChildNode(sphere)sphere.physicsBody = SCNPhysicsBody.dynamicBody()sphere.runA
我有一个充满活力的球体.我想动画这个球体的比例,使它的大小增加:

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.

有趣的是,通过在动画假定运行后打印出球体的比例进行进一步检查,可以观察到比例确实已经改变,除非物理体被移除,否则它是不可见的:

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
})

为什么不可能改变动态体的规模? (请注意,静态和运动体可以很好地扩展.)是否有可能以某种方式实现这一点?

当一个人改变大小时,你不仅需要一个“缩放速度”来与其他对象进行交互,你需要一个“缩放力”.在成长过程中,它应该有多强烈地推动它碰撞的东西?如果它处于一种取决于其质量的情况,如跷跷板上的平衡,会发生什么?

游戏引擎已经是现实世界物理学的松散近似,因此要求他们自己找出Ant-Man物理学有点紧张.如果他们能做到这一点,他们可能也会开始制造杀手机器人,这有点毁了你的一天.

网友评论