我正在建立一个平台游戏,当他走路时我让相机跟随玩家:
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
...
如何使控制按钮保持静止?
答案 0 :(得分:12)
相机的后代始终相对于相机节点的原点进行渲染,而不会将相机的缩放或旋转应用于它们。例如,如果您的游戏想要在游戏玩法之上显示分数或其他数据,则渲染这些元素的节点应该是当前相机节点的后代。
如果您希望HUD元素在相机移动/缩放/旋转时相对于屏幕保持固定,请将它们作为相机的子节点。
顺便说一句,您不需要在每let constraint = SKConstraint.distance(SKRange(constantValue: 0), toNode: player)
camera.constraints = [ constraint ]
更改相机的位置。相反,只需约束相机的位置以匹配玩家的位置:
{{1}}
然后,SpriteKit会自动将相机保持在播放器的中央位置,而无需任何每帧工作。您甚至可以添加多个约束 - 例如,跟随播放器,但不要让相机太靠近世界边缘(并显示空白区域)。
答案 1 :(得分:1)
将按钮作为子项添加到相机中,例如cam.addchild(yourButton)
答案 2 :(得分:0)
根据rickster的回答,我做出了这些限制,即即使玩家跳跃,相机也只能水平移动。添加它们的顺序很重要。如果有人发现它们有用:
Swift 4.2
let camera = SKCameraNode()
scene.addChild(camera)
camera.constraints = [SKConstraint.distance(SKRange(upperLimit: 200), to: player),
SKConstraint.positionY(SKRange(constantValue: 0))]