我在父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个节点,每个节点都有自己的物理场,将它们固定到位。任何建议都会有所帮助。
答案 0 :(得分:0)
您可以尝试用
配置“弹跳”效果training