斯威夫特:SKConstraint的规模? (或等同物)口吃

时间:2017-09-22 22:13:41

标签: sprite-kit constraints scale scaletransform

在我使用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用于比例(或等效),这是一种更好的方法来阻止这种口吃?谢谢:))

1 个答案:

答案 0 :(得分:0)

没有直接的SKConstraint相当于比例,但是你遇到口吃的原因是当你越过边界时它会在下次调用函数时快速回退,而不是在渲染帧之前,所以理论上你可以瞬间大幅放大,并保持不变,直到再次激活缩放功能。

创建等效项的一种方法是将代码检查是否在渲染循环中检查比例是否大于x hereRenderLoop Diagram

所以,如果你在最后一刻检查:

override func didFinishUpdate() {
    if newCamera.xScale < 0.148{
        newCamera.setScale(0.148)
    } else if newCamera.xScale > 10{
        newCamera.setScale(10)
    }
}