swift - SKCameraNode 工作异常

标签 swift sprite-kit

我正在尝试创建一个简单的 SpriteKit 游戏。我有一个从屏幕底部中心开始的播放器。 我在 GameScene 中添加了一个摄像头来跟踪玩家,但它不起作用。当我使用以下代码运行它时:

class GameScene: SKScene {
    let mPlayer = Player(circleOfRadius: 45, fillColor: myColors.blue, strokeColor: myColors.red)
    let cameraNode = SKCameraNode()

    override func didMove(to view: SKView) {
        setup()
    }

    override func update(_ currentTime: TimeInterval) {
        // Called before each frame is rendered
        moveCamera()
        Player.movePlayerUp(mPlayer: mPlayer)
    }

    func setup(){
        mPlayer.position = CGPoint(x: self.frame.midX - PLAYER_WIDTH, y: self.frame.minY + PLAYER_HEIGHT)

        self.camera?.position = mPlayer.position

        self.camera = cameraNode
        self.addChild(cameraNode)
        self.addChild(mPlayer)
    }

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        for touch in touches{
            let location = touch.location(in: self)
            mPlayer.run(SKAction.moveTo(x: location.x, duration: 0.1))
        }
    }

    func moveCamera(){
        let moveAction = SKAction.moveTo(y: mPlayer.position.y, duration: 0.1)
        cameraNode.run(moveAction)
    }
}

玩家从底部开始并立即移动到屏幕中央,如下图所示:enter image description here

如何让摄像机从一开始就跟随玩家并随着它移动到顶部? 希望我的问题很清楚,并对图片的大小表示歉意。

最佳答案

此代码在空的 Xcode 项目中适用于我。您可能认为这不是因为您的背景图像是 1 种颜色,并且您只是短暂地移动播放器。

此外,在更新方法中,您设置将玩家不断移动到中间,这是没有必要的。

尝试在背景中添加一些条纹,以便更容易看到您是否移动,而不是将此代码添加到更新方法中,让玩家不断地缓慢向上移动。

let action = SKAction.move(by: CGVector(dx: 0, dy: 5), duration: 1)
mPlayer.run(action)

您将看到摄像机正确跟随玩家。

如果您需要以不同的方式将相机置于玩家的中心,例如在 y 轴上,则只需增加/减少相机的 y 位置即可。

 let moveAction = SKAction.moveTo(y: mPlayer.position.y + 200, duration: 0.1)
 cameraNode.run(moveAction)

希望这有帮助

关于swift - SKCameraNode 工作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42166331/

相关文章:

由于信号 : Segmentation fault: 11,Swift 编译器错误命令失败

arrays - Swift Serpent 使用顶级数组生成 JSON

ios - 有没有办法使用 SpriteKit 获取屏幕上所有触摸的 NSSet?

ios - 当且仅当运行时到达代码块内部时才导入类

ios - 如何加速海量 SKNode Action ?

ios - 我在使用协议(protocol)传递数据时做错了什么

ios - 如何遍历 JSON 坐标并将注释构建为一个函数?

ios - 在 Swift 中独立于其掩码移动 UIImageView

swift - SKShapeNode 在我不想的时候与我的 SKPhysicsbody 发生碰撞

iphone - 如何从 SKSpriteNode 或 SKTexture 获取像素颜色?