使用物理场将弹簧动画添加到SceneKit节点吗?

问题描述 投票:1回答:1

我在父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)

}

而不是在不慢的情况下上下弹起,直到它减速到停止为止,“状态”节点以加速的速度上下弹起,直到飞离屏幕为止。关于实现有什么问题的任何想法?

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

swift scenekit game-physics
1个回答
0
投票
statue.physicsBody?.restitution = 0.0
© www.soinside.com 2019 - 2024. All rights reserved.