【发布时间】:2019-08-03 16:55:24
【问题描述】:
出于学习目的,我正在使用 SpriteKit 和 Swift 5 编写类似 Pong 的游戏。我正在尝试让玩家的桨(一个 SKNode 矩形)在 x 坐标上在屏幕上移动,但不能。
我试过这个简单的解决方案:
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for t in touches {
let location = t.location(in: self)
playerPaddle.position.x = location.x
}
它有效,但似乎桨只在点击(触摸)时移动,而不是拖动。
我也尝试过使用 UIPanGestureRecognizer,但我不太明白如何调用它,这是我从 Apple 官方开发人员文档中复制的代码,并根据我的情况进行了一些更改:
@IBAction func panPiece(_ gestureRecognizer : UIPanGestureRecognizer) {
guard gestureRecognizer.view != nil else {return}
let piece = gestureRecognizer.view!
let translation = gestureRecognizer.translation(in: piece.superview)
if gestureRecognizer.state == .began {
self.initialPos = piece.center
}
else if gestureRecognizer.state != .changed {
let newPos = CGPoint(x: initialPos.x + translation.x, y: initialPos.y)
piece.center = newPos
}
}
【问题讨论】:
-
我猜 playerPaddle 是一个空的 SKNode。
标签: swift user-interface sprite-kit pan