我正在尝试创建一个简单的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)
}
}
如何让相机从一开始就跟随播放器并随之移动到顶部? 希望我的问题很明确,并对图片的大小表示抱歉。
答案 0 :(得分:0)
此代码适用于空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)
希望这有帮助