Swift:使控制按钮不随相机移动

Ser*_*iza 2 ios swift

我正在建立一个平台游戏,当他走路时我让相机跟随玩家:

let cam = SKCameraNode()

override func didMoveToView(view: SKView) {
    self.camera = cam
    ...
}

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */

    cam.position = Player.player.position
    ...
Run Code Online (Sandbox Code Playgroud)

但是,当相机移动时,控制按钮也会移动 在此输入图像描述

我该怎么办才能使控制按钮保持静止?

ric*_*ter 12

请参阅SKCameraNode文档中的此注释:

相机的后代始终相对于相机节点的原点进行渲染,而不会将相机的缩放或旋转应用于它们.例如,如果您的游戏想要在游戏玩法之上显示分数或其他数据,则呈现这些元素的节点应该是当前相机节点的后代.

如果您希望HUD元素相对于屏幕保持固定,即使相机移动/缩放/旋转,也要使它们成为相机的子节点.

顺便说一下,你不需要改变相机的位置update().相反,只需约束相机的位置以匹配播放器的位置:

let constraint = SKConstraint.distance(SKRange(constantValue: 0), toNode: player)
camera.constraints = [ constraint ]
Run Code Online (Sandbox Code Playgroud)

然后,SpriteKit会自动将相机保持在播放器的中心位置,而不需要任何每帧工作.您甚至可以添加多个约束 - 例如,跟随播放器,但不要让相机太靠近世界边缘(并显示空白区域).