Swift: 规模的 SKConstraint? (或等同物)口吃
Swift: SKConstraint for scale? (or equivalent) Stuttering
此刻我正在使用 SKConstraint.positionX(rangex, y: rangey)
将我的 SKCameraNode 限制在我创建的游戏板中。这很好,因为当你到达边界时没有卡顿。但是我目前限制相机比例的方法会在它经过并返回时击中边界时产生断断续续的情况。
@objc func zoomedView(_ sender:UIPinchGestureRecognizer) {
if newCamera.xScale > 0.148{
let pinch = SKAction.scale(by: 1/sender.scale, duration: 0.0)
newCamera.run(pinch)
sender.scale = 1.0
} else {newCamera.setScale(0.148)}
}
是否有一个 SKConstraint for scale(或等效的)是停止这种卡顿的更好方法?谢谢:)
没有直接的 SKConstraint 等效比例,但是你遇到卡顿的原因是当你越过边界时它会在下次调用函数时快速返回,而不是在渲染帧之前,所以理论上你可以瞬间大幅放大,并停留在那里直到你再次激活缩放功能。
创建等效项的一种方法是将检查比例是否大于 x 的代码放入渲染循环中,如 here 所述。
因此,如果您要在最后一刻检查:
override func didFinishUpdate() {
if newCamera.xScale < 0.148{
newCamera.setScale(0.148)
} else if newCamera.xScale > 10{
newCamera.setScale(10)
}
}
此刻我正在使用 SKConstraint.positionX(rangex, y: rangey)
将我的 SKCameraNode 限制在我创建的游戏板中。这很好,因为当你到达边界时没有卡顿。但是我目前限制相机比例的方法会在它经过并返回时击中边界时产生断断续续的情况。
@objc func zoomedView(_ sender:UIPinchGestureRecognizer) {
if newCamera.xScale > 0.148{
let pinch = SKAction.scale(by: 1/sender.scale, duration: 0.0)
newCamera.run(pinch)
sender.scale = 1.0
} else {newCamera.setScale(0.148)}
}
是否有一个 SKConstraint for scale(或等效的)是停止这种卡顿的更好方法?谢谢:)
没有直接的 SKConstraint 等效比例,但是你遇到卡顿的原因是当你越过边界时它会在下次调用函数时快速返回,而不是在渲染帧之前,所以理论上你可以瞬间大幅放大,并停留在那里直到你再次激活缩放功能。
创建等效项的一种方法是将检查比例是否大于 x 的代码放入渲染循环中,如 here 所述。
因此,如果您要在最后一刻检查:
override func didFinishUpdate() {
if newCamera.xScale < 0.148{
newCamera.setScale(0.148)
} else if newCamera.xScale > 10{
newCamera.setScale(10)
}
}