相机移动不够快

时间:2015-07-10 23:24:29

标签: ios swift sprite-kit sknode

我目前正在尝试将相机置于SpriteKit中的SKNode上。 在更新功能中,我有以下内容:

override func update(currentTime: NSTimeInterval) {
    if self.camera != nil {
        self.camera!.position = CGPointMake(CGRectGetMidX(super.frame) / 10, wayPoints.last!.y)
        self.centerOnNode(self.camera!)
    }
}

这是我的centerOnNode函数:

func centerOnNode(node: SKNode) {
    let cameraPositionInScene: CGPoint = node.scene!.convertPoint(node.position, fromNode: node.parent!)
    node.parent!.position = CGPoint(x:node.parent!.position.x - cameraPositionInScene.x, y:node.parent!.position.y - cameraPositionInScene.y)
}

这就是Apple建议将相机集中在节点上的方式(请注意,这些都在世界SKNode中)。这种作品;它使相机居中,但它的更新速度不够快。 这会产生以下效果(请注意,在我的情况下,' CGRectGetMidX(super.frame)/ 10'将永远是屏幕的中心,并且' wayPoints.last!.y'将始终是该行顶点的Y位置): http://gyazo.com/95f02f98e5707b0065e74f90ac547139

正如您所看到的那样,相机正在移动,但线条移动速度更快。我不确定为什么会这样,因为相机不应该以与线路相同的速度移动?

修改 我在一个单独的函数中添加/更新wayPoints数组,该函数每0.5秒调用一次:

NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: "addPoint", userInfo: nil, repeats: true)

但即使我在addPoint功能中更新相机位置,仍会出现相同的效果。

1 个答案:

答案 0 :(得分:0)

我不确定执行此操作的“正确”方法是什么。但是我将相机节点的速度设置为等于中心节点的速度,并且将相机的位置设置为等于节点的位置。例如:

camera?.position = player!.position
camera?.physicsBody?.velocity = player!.physicsBody!.velocity

为此,您将需要给相机节点一个物理物体。当您这样做时,建议您确保它位于其自身的碰撞,场和接触面罩上。