gpt4 book ai didi

swift - SKCameraNode 工作异常

转载 作者:行者123 更新时间:2023-11-30 12:41:44 29 4
gpt4 key购买 nike

我正在尝试创建一个简单的 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com