我一直致力于通过SKCameraNode
捏合识别器向我的项目添加缩放功能。我的相机节点正在俯瞰mainMap
包含我的游戏的节点,我希望具有有限的缩放功能。
在我的捏合函数处理程序中,我有以下代码:
func zoomView(recognizer: UIPinchGestureRecognizer){
let currentScale = (mainScene.camera?.xScale)!
let futureScale = (currentScale * recognizer.scale)
if futureScale > 1.1 || futureScale < 0.5{
recognizer.scale = 1.0
return
}else{
mainScene.camera?.setScale((mainScene.camera?.xScale)! * recognizer.scale)
}
recognizer.scale = 1.0
print("currentScale: \(currentScale)")
print("recognizerScale: \(recognizer.scale)")
print("scaleFactor: \(futureScale)\n")
}
我看过许多类似的问题,但他们没有这个确切的问题。当比例接近边界值并变为诸如 之类的值时1.09812164306641
,我倾向于对缩放产生口吃效果,因为它似乎无法达到确切的边界值。
有人对如何避免这种行为有建议吗?最有帮助的是解释如何让缩放在达到限制时表现得更自然,它会产生 IOS 应用程序惯用的小反弹效果。真的任何关于如何使用平滑变焦的相机的连贯解释将不胜感激!
谢谢