ios - 如何制作一个在 update() 中按下按钮时启动的 int 秒计数器?

标签 ios swift sprite-kit

我正在尝试制作第二个在 GameScene.update() 中运行的计数器,并在我按下一个按钮最多 5 秒时进行计数,然后停止并重置为 0 等待另一个按钮按下。

这是我的如果按钮被按下的代码:

override func update(currentTime: CFTimeInterval) {

    if (Data.gameScene.buttonPressed == true) {
        player.texture = SKTexture(imageNamed: "Spaceship2")
        player.physicsBody = nil
    }
}

如您所见,当按下按钮时,玩家会变得不可见(Spaceship2 的不透明度较低)并且它不再具有物理体(因此敌人无法击中它)。

我想要的是这个(伪代码):

if (button pressed == true) {
    start timer
    if timer < 5 seconds { 
        player can't be hit and is invisible
    } else {
         player can be hit and is visible
      }
 }

有人能帮我吗?

最佳答案

您可以通过一系列等待操作和 runBlock 操作来完成此操作。

override func update(currentTime: CFTimeInterval) {

    if (Data.gameScene.buttonPressed == true) {
        //put code to make the player invisible

       let waitAction = SKAction.waitForDuration(5)
       let makePlayerVisibleAction = SKAction.runBlock {
           //put code to make the player visible
       }
       let action = SKAction.sequence([waitAction, makePlayerVisibleAction])

       player.runAction(action)  
    }
}

关于ios - 如何制作一个在 update() 中按下按钮时启动的 int 秒计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203721/

相关文章:

ios - 我应该使用 dequeReusableCellWithIdentifier 吗?

ios - AR中替代SCNNode的最佳方式

swift - 如何访问 SpriteKit 场景编辑器引用节点上的自定义类中包含的 Swift 变量?

swift 3(SpriteKit): Making a projectile move

ios - 带图像的 SKSpriteNode 不会着色

ios - 无法上传 iApp 托管内容

iOS:不为 UICollectionView 中包含的 UITableView 调用 cellFowRow

ios - 将框架添加到 AIR Native Extension (ANE) 时缺少体系结构

swift - AWS Amplify pod 安装依赖项版本错误

ios - 使用 UIKit Dynamics 时如何更新 UIView 布局?