【问题标题】:SpriteKit - Nodes not adding to SKCameraNode - SwiftSpriteKit - 节点未添加到 SKCameraNode - Swift
【发布时间】:2017-05-30 21:46:26
【问题描述】:

我试图将游戏手柄控制器固定在相机节点的左下角,但是当我将该节点添加为相机的子节点时,它没有显示出来?

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)

}

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    你不需要

    convert(CGPoint(x: 0, y: 0), to: gameCamera)
    

    您可以将 CGPoint 位置设置为 (0,0),它应该在相对于相机空间的那个点。

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

    gameCamera.addChild(joypadBackground)
    joypadBackground.position = CGPoint(x: 0, y: 0)
    

    如果您在 SKScene 中使用中间屏幕原点,则它应该位于屏幕中间。

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

    【讨论】:

      【解决方案2】:

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

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

      self.camera = gameCamera
      self.addChild(gameCamera)
      

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

      【讨论】:

      • 这应该是公认的答案。解决了我的问题谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      相关资源
      最近更新 更多