微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – SceneKit不会缩放动态体

我有一个充满活力的球体.我想动画这个球体的比例,使它的大小增加

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物理学有点紧张.如果他们能做到这一点,他们可能也会开始制造杀手机器人,这有点毁了你的一天.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐