Невозможно переместить весло Spritekit - PullRequest
0 голосов
/ 05 февраля 2020

Вот мой код для перемещения весла:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
  let touch = touches.first
  let touchLocation = touch!.location(in: self)

  if let body = physicsWorld.body(at: touchLocation) {
    if body.node!.name == "horizontal_paddle" {
      print("Began touch on paddle")
      isFingerOnPaddle = true
    }
  }
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
  if isFingerOnPaddle {
    let touch = touches.first
    let touchLocation = touch!.location(in: self)
    let previousLocation = touch!.previousLocation(in: self)
    let paddle = childNode(withName: "horizontal_paddle") as! SKSpriteNode
    var paddleX = paddle.position.x + (touchLocation.x - previousLocation.x)
    paddleX = max(paddleX, paddle.size.width/2)
    paddleX = min(paddleX, size.width - paddle.size.width/2)
    paddle.position = CGPoint(x: paddleX, y: paddle.position.y)
  }
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
  isFingerOnPaddle = false
}

Но я не могу двигать весло в симуляции. Не могли бы вы помочь мне, пожалуйста?

А вот определение моего весла:

let horizontal_paddle = SKSpriteNode(imageNamed: "horizontal_paddle")
    horizontal_paddle.name = "horizontal_paddle"
    horizontal_paddle.position = CGPoint(x: 360, y: 85)
    horizontal_paddle.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed: "horizontal_paddle"), size: horizontal_paddle.size)
    horizontal_paddle.physicsBody?.affectedByGravity = false
    horizontal_paddle.physicsBody?.isDynamic = false
    self.addChild(horizontal_paddle)

Для информации, физическое тело успешно создано и в консоли у меня есть:

2020-02-05 11:02:07.300339+0100 Bounce[1864:158853] Metal API Validation Enabled
2020-02-05 11:02:07.796788+0100 Bounce[1864:158853] SKView: ignoreRenderSyncInLayoutSubviews is NO. Call _renderSynchronouslyForTime without handler
...