使用物理字段向SceneKit节点添加弹簧动画?

时间:2017-12-26 04:03:19

标签: swift scenekit game-physics

我在父UIScrollView中有一个SceneKit场景。当调用scrollViewWillEndDragging时,我希望场景中的某些对象反弹到位。我一直试图使用SceneKit物理来做到这一点,没有运气。这是我在viewDidLoad中设置的当前物理," statue"作为我尝试动画的一个节点:

    statue.physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
    statue.physicsBody?.isAffectedByGravity = false
    let springnode = SCNNode()
    springnode.position = statue.position
    springnode.physicsField = SCNPhysicsField.spring()
    scene.rootNode.addChildNode(springnode)
    springnode.physicsField?.strength = 1

这是我的scrollViewWillEndDragging:

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    statue.physicsBody?.applyForce(SCNVector3(0, velocity.y, 0), asImpulse: true)

}

&#34;&#34;&#34;&#34;&#34;&#34;&#34;&#34;节点以加速的速度上下跳动,直到它飞离屏幕。关于实施有什么问题的任何想法?

我还不确定这种基于物理的解决方案是否可以使用10到20个节点,每个节点都有自己的物理场,将它们固定到位。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试用

配置“弹跳”效果
training