相机随节点移动后无法按下节点

Nodes cannot be pressed after camera moves with nodes

我能够让我的控制按钮随相机移动,但是在播放器移动后它们不再起作用。我认为他们的位置随着节点移动,所以在触摸开始时,位置在被触摸时仍然有效。我还应该在玩家停止移动后更新位置吗?摄像机节点随玩家移动。

override func didMove(to view: SKView) {
    self.anchorPoint = CGPoint(x: 0.5, y: 0.5)

    // Make sure you can get teh player from the scene file
    if let somePlayer = self.childNode(withName: "player") as? SKSpriteNode {
        player = somePlayer
    
        // Set physics
        player.physicsBody?.isDynamic = false

    } else {
        print("No player")
    }
    
    
    let widthHalf:CGFloat = self.view!.bounds.width / 2
    let heightHalf:CGFloat = self.view!.bounds.height / 2
    
    cameraNode.addChild(buttonNorth)
    buttonNorth.position = CGPoint(x: -widthHalf + 80, y: -heightHalf + 100)
    
    cameraNode.addChild(buttonSouth)
    buttonSouth.position = CGPoint(x: -widthHalf + 80, y: -heightHalf + 40)
    buttonSouth.yScale = -1
    
    cameraNode.addChild(buttonWest)
    buttonWest.position = CGPoint( x: -widthHalf + 30, y: -heightHalf + 70)
    
    cameraNode.addChild(buttonEast)
    buttonEast.position = CGPoint( x: -widthHalf + 130, y: -heightHalf + 70)
    
    buttonNorth.xScale = 0.4
    buttonNorth.yScale = 0.4
    
    buttonSouth.xScale = 0.4
    buttonSouth.yScale = 0.4
    buttonSouth.zRotation = CGFloat(Double.pi)
    
    buttonEast.xScale = 0.4
    buttonEast.yScale = 0.4
    buttonEast.zRotation = CGFloat(Double.pi)
    
    buttonWest.xScale = 0.4
    buttonWest.yScale = 0.4
    
    addChild(cameraNode)
    camera = cameraNode
    
}

   override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        for touch in (touches ) {
            let location = touch.location(in: self)
            
            
            if (buttonNorth.frame.contains(location)) {
                
                currentState = MoveStates.n
                buttonNorth.texture = SKTexture(imageNamed: "Directional_Button_Lit")
                isPressing = true
                
            } else if (buttonSouth.frame.contains(location)) {
                
                currentState = MoveStates.s
                buttonSouth.texture = SKTexture(imageNamed: "Directional_Button_Lit")
                isPressing = true
                
            }  else if (buttonEast.frame.contains(location)) {
                
                currentState = MoveStates.e
                buttonEast.texture = SKTexture(imageNamed: "Directional_Button2_Lit")
                isPressing = true
                
            }  else if (buttonWest.frame.contains(location)) {
                
                currentState = MoveStates.w
                buttonWest.texture = SKTexture(imageNamed: "Directional_Button2_Lit")
                isPressing = true
                
            }
            
        }
    }

问题出在我的touchesBegan

我有这个:

let location = touch.location(in: self)

但是因为我让节点随着我需要的相机移动:

let location = touch.location(in: self.camera!)