Вот мой код для перемещения весла:
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