【发布时间】:2017-09-20 16:46:00
【问题描述】:
我有一个小型 Space Invaders 游戏,我添加了两个按钮 leftButton 和 rightButton,我希望 ship 移动,只要其中一个按钮被触摸并保持在正确的方向。
我让它朝正确的方向移动,但我必须反复点击按钮,但我希望ship 在玩家按住按钮时移动。
为简单起见,我只发布了左侧按钮的代码,因为我相信其他按钮的编码方式是相同的:
class GameScene: SKScene {
var leftButton = SKSpriteNode()
var ship = SKSpriteNode()
override func didMove(to view: SKView) {
leftButton = self.childNode(withName: "left") as! SKSpriteNode
ship = self.childNode(withName: "player") as! SKSpriteNode
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch: AnyObject in touches {
let pointTouched = touch.location(in: self)
if leftButton.contains(pointTouched) {
player.position.x -= 30
}
}
}
}
【问题讨论】:
-
对于不断移动使用更新:方法并直接更改位置属性(不使用操作)。
-
或者如果你使用物理,在提到的方法中对节点的物理体施加力。
-
如果您不想弄乱您的更新方法,那么您可以在 touchdown 事件上使用一个动作,并使用 touch up 事件删除该动作。只需确保使用 moveTo,并使用您所在位置到边缘的距离来确定时间。 (如果遍历整个屏幕需要 5 秒,那么您应该需要 2.5 秒)
-
对不起,我不明白如何实现更新的方法!
标签: swift xcode sprite-kit skspritenode touchesbegan