【发布时间】:2019-09-29 21:39:00
【问题描述】:
我有一个scnnode,我用UIPanGestureRecognizer 围绕它的Y 轴旋转。这很好,但我想对化身应用惯性,这样一旦用户抬起手指,它就会继续旋转(并减慢速度),有点像你在滚动视图中所拥有的。这可能吗?
func addMoveAvatarGestures(sceneView: SCNView) {
let pan = gestureWithRootNode(target:self, action:#selector(rotateAvatar(_:)))
if let scene = sceneView.scene {
pan.rootNode = scene.rootNode
}
pan.maximumNumberOfTouches = 1
pan.minimumNumberOfTouches = 1
pan.delegate = self
self.rotationGesture = pan
sceneView.addGestureRecognizer(pan)
}
@objc func rotateAvatar(_ sender: gestureWithRootNode) {
guard let nodeToRotate = sender.rootNode else {
return
}
let translation = sender.translation(in: sender.view!)
let xToAngle = Float(self.view.frame.width) / Float(360)
let newAngleY = Float(translation.x) * xToAngle
let velocity = sender.velocity(in: sender.view!)
if (fabs(velocity.x) > fabs(velocity.y)) {
sender.setTranslation(CGPoint.zero, in: sender.view!)
nodeToRotate.eulerAngles.y += nodeExtensions.deg2rad(newAngleY)
}
}
【问题讨论】: