Swift:SKConstraint用于缩放吗? (或相当于)口吃
问题描述:
当时我使用SKConstraint.positionX(rangex, y: rangey)
将我的SKCameraNode限制在我创建的游戏板中。这很好,因为当你碰到边界时就没有口吃。但是我目前的方法来限制相机的比例,因为它在经过并回击时撞到了边界。Swift:SKConstraint用于缩放吗? (或相当于)口吃
@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这是一个更好的办法来制止这种口吃?谢谢:)
答
没有直接的SKConstraint相当于规模,但是你遇到口吃的原因是当你越过界限时,它会在下次调用函数时对齐,而不是在渲染帧之前,所以理论上你可以瞬间大幅放大,并保持在那里直到你再次激活缩放功能。
创建等价物的一种方法是将代码检查在渲染循环中比例是否大于x,如here所示。
所以,如果你检查的最后一刻:
override func didFinishUpdate() {
if newCamera.xScale < 0.148{
newCamera.setScale(0.148)
} else if newCamera.xScale > 10{
newCamera.setScale(10)
}
}
听起来令人沮丧...没有你的帧率下降实际?这是在模拟器上还是在设备上? – Fluidity
@Fluidity这不是丢失帧率,它发生是因为我可以缩小边界,然后重新设置,所以每次调用函数都会因为pinchgesture可以越过边界,所以会在下一次重置它。 – Skidushe
@流利性我唯一想到的就是它不在绘制循环中,只有当函数被调用时,所以如果我把它放在绘制循环中,它可能工作,但我没有时间去测试。 – Skidushe