如何在 Swift 3/SpriteKit 中限制球的敲击?
Posted
技术标签:
【中文标题】如何在 Swift 3/SpriteKit 中限制球的敲击?【英文标题】:How to limit the tap of a ball in Swift 3/SpriteKit? 【发布时间】:2016-12-28 03:56:02 【问题描述】:所以,我正在创建一个游戏,玩家在分配给他们的时间内点击一个随机出现的球,我想将点击限制在某个数量。如果有人有一些想法或 sn-p 代码,我将不胜感激。
这是一个sn-p:
var tapCount = 0
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
tapCount = tapCount + 1
print(tapCount)
if tapCount >= 10
print("we made it")
【问题讨论】:
【参考方案1】:您可以创建一个每次检测到触摸时更新的计数器。例如:
var touchesThisRound : Int = 0;
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!)
touchesThisRound+=1;
然后每轮重置一次。
【讨论】:
如果我改变 touchesThisRound += 10 那意味着用户只能点击 10 次? 不,你需要一个像 'let maxTouches : Int = 10;' 这样的变量那么您可能需要在 touchesBegan 中使用 if 语句,该语句仅在 touchesThisRound @Mike 看起来不错,如果“我们做到了”你的意思是用户使用了他们所有的触摸! 是的。但是当我开始编写代码并声明我的变量时。它没有做任何事情。我要做的就是在他们点击 10 次时停止游戏,然后进入下一个级别。 那么你需要把那个逻辑写在一个函数中,然后在touchesThisRound==10时在touchesBegan中调用那个函数。【参考方案2】:每个球都应该有一些相关的实体(GKEntity)。该实体可以有一个名为 tapCount 的属性,您可以为每次点击增加此值。当 tapCount 达到限制时,您可以停止接受点击。
【讨论】:
你能看看我更新的问题,如果我做得对的话。 我认为您需要阅读如何将 GKEntity 与 SKSpriteNode 结合使用。如果我今天有时间,我可以尝试写一个小样本,但现在很难。苹果有一些很好的样品。您还可以阅读 Apple 的文档:developer.apple.com/library/content/documentation/General/…以上是关于如何在 Swift 3/SpriteKit 中限制球的敲击?的主要内容,如果未能解决你的问题,请参考以下文章
从 AppDelegate 调用 GameScene 方法(Swift 3、SpriteKit、Xcode 8)
如何限制 UITextField 在 Swift 中只接受数字?
Swift Eureka forms:如何限制多值部分中的行数?