gpt4 book ai didi

ios - 使用 Spritekit 中的限制平滑缩放

转载 作者:行者123 更新时间:2023-11-29 11:49:52 25 4
gpt4 key购买 nike

我一直致力于通过 SKCameraNode 和捏合识别器为我的项目添加缩放功能。我的相机节点俯瞰着包含我的游戏的 mainMap 节点,我希望具有有限的缩放功能。

在我的 pinches 函数处理程序中,我有以下代码:

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 应用程序惯用的小弹跳效果。非常感谢任何有关如何使用具有平滑缩放功能的相机的连贯解释!

谢谢

最佳答案

我通过子类化 SKCameraNode 并添加速度、摩擦力和边缘吸引属性,在平移和缩放期间实现了弹跳效果。

这允许我们设置相机的速度,以便在更新时自行移动和缩放。当相机移动到其指定边界之外时,会应用边缘吸引力,从而产生您正在寻找的弹跳效果。

本质上,相机移动超过其最小/最大值,然后轻轻拉回到超出的限制。

这也提供了额外的效果,即当用户触摸结束时相机不会突然停止,而是逐渐停止。

在我们的完整游戏内部开发太难了,所以我们在 GitHub 上制作了一个演示项目,我们可以完全专注于相机功能。

https://github.com/HumboldtCodeClub/SKCamera-Demo

关于ios - 使用 Spritekit 中的限制平滑缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41606720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com