SpriteKit-未添加到SKCameraNode的节点-Swift

SpriteKit-未添加到SKCameraNode的节点-Swift,swift,sprite-kit,Swift,Sprite Kit,我试图将游戏板控制器固定在相机节点的左下角,但当我将该节点作为相机的子节点添加时,它不会显示 let gameCamera = SKCameraNode() var joypadBackground : SKSpriteNode = SKSpriteNode(imageNamed: "a") override func didMove(to view: SKView) { //Set game camera self.camera = gameCamera joypad

我试图将游戏板控制器固定在相机节点的左下角,但当我将该节点作为相机的子节点添加时,它不会显示

let gameCamera = SKCameraNode()
var joypadBackground : SKSpriteNode = SKSpriteNode(imageNamed: "a")
override func didMove(to view: SKView) {

    //Set game camera
    self.camera = gameCamera
    joypadBackground.position = convert(CGPoint(x: 0, y: 0), to: gameCamera)
    joypadBackground.size = CGSize(width: 50, height: 50)
    joypadBackground.zPosition = 1000


    gameCamera.addChild(joypadBackground)

}
你不需要

convert(CGPoint(x: 0, y: 0), to: gameCamera)
您只需将CGPoint位置设置为(0,0),它应该位于相对于相机空间的该点上

不确定这是否有帮助,但我所做的是(通常)在将子节点添加到其父节点后定位它。对我来说,这主要是一个心理提醒,孩子的位置在父母的坐标空间内。所以我会这样做:

gameCamera.addChild(joypadBackground)
joypadBackground.position = CGPoint(x: 0, y: 0)
<>如果你在你的SkFrice中使用一个中间屏幕源,这应该在屏幕的中间。


左下角将是负x和负y值,其大小与帧大小有关。

我第一次使用SKCameraNode并创建平视显示时遇到了同样的问题

基本上你必须记住相机有两个部分。运行其功能并呈现其子级。通过将场景的摄影机设置为gameCamera,您已经设置了功能,但您的摄影机不在用于渲染的节点树中。因此,如果您有需要渲染其子对象的摄影机,请不要忘记将其作为子对象添加到场景中,然后将显示摄影机的子对象

self.camera = gameCamera
self.addChild(gameCamera)

希望通过一个非常简单的解决方案可以帮助人们避免一个非常常见的错误。

这应该是公认的答案。解决了我的问题谢谢!