如何在 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)

如何限制 Swift 中文本字段中的数字?

如何限制 UITextField 在 Swift 中只接受数字?

Swift Eureka forms:如何限制多值部分中的行数?

如何设置下载数据的时间限制(来自json数据库)Swift 2

在 Swift 中将文本限制为一定数量的单词