【发布时间】:2015-10-20 19:18:58
【问题描述】:
我有一个具有这种机制的游戏:
玩家触摸屏幕并出现箭头
玩家拖动手指,改变箭头方向
玩家抬起手指并射箭。
准确执行时效果很好。但如果玩家不小心双击,游戏会射出两支箭,99% 游戏就结束了。我想阻止这种情况,但不知道该怎么做。我尝试了 userInteractionEnabled,它会阻止交互,但不会在需要时取消阻止。
我正在像这样在屏幕上添加箭头:
func addArrow() {
arrow = SKSpriteNode(imageNamed: "red")
arrow.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMinY(self.frame) - self.arrow.size.height)
arrow.zPosition = 1
addChild(arrow)
arrowAppear.play()
let moveToShoot = SKAction.moveTo(CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMinY(self.frame) + self.arrow.size.height + 50), duration: 0.2)
arrow.runAction(moveToShoot)
SKActionTimingMode.EaseOut
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if !GameOver {
runAction(SKAction.runBlock(addArrow))
}
}
【问题讨论】:
-
我会有一系列
SKActions 来设置一个变量(类似于addArrowActionRunning),并且(我认为你可以)使用SKActions 来设置一个变量。所以它将addArrowActionRunning设置为true,调用moveTo,然后将addArrowActionRunning设置为false。也许这会有所帮助。 -
@Gliderman 你的意思是在
addArrow函数里面做?然后开始联系addArrow,仅当addArrowActionRunning == false? -
我看不出它有什么帮助
标签: ios swift sprite-kit touch skaction