斯威夫特:SKAction没有触摸工作

时间:2017-02-17 22:13:35

标签: ios swift sprite-kit skaction

我一直在尝试跟随快速的教程,我遇到了一些令我非常沮丧的事情,我试图遵循的每一个教程,每当使用SKAction我都不能跟随任何教程,因为我的程序永远不会工作。这种情况发生在MULTIPLE程序中,我无法弄明白。

以下是该计划的代码:

import SpriteKit
import GameplayKit

class GameScene: SKScene{

let player = SKSpriteNode(imageNamed: "playerShip")

override func didMove(to view: SKView) {

    let background = SKSpriteNode(imageNamed: "background")
    background.size = self.size
    background.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
    background.zPosition = -1
    self.addChild(background)


    player.setScale(1)
    player.position = CGPoint(x: self.size.width / 2, y: self.size.height * 0.2)
    player.zPosition = 2
    self.addChild(player)


}

func fireBullet(){

    let bullet = SKSpriteNode(imageNamed: "bullet")
    bullet.setScale(1)
    bullet.zPosition = 1
    bullet.position = player.position

    let moveBullet = SKAction.moveTo(y: self.size.height + bullet.size.height, duration: 1)
    let deleteBullet = SKAction.removeFromParent()
    let bulletSequence = SKAction.sequence([moveBullet, deleteBullet])
    bullet.run(bulletSequence)

}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    fireBullet()
}

}

每当我在模拟器中构建并运行程序时,一切都很好,构建成功。然而,每当我点击没有任何反应时,每当我尝试使用SKAction做任何事情时都会发生这种情况。我应该提一下,每次点击时屏幕右下角的FPS都会发生变化,但没有其他事情发生,节点数保持不变,并且屏幕保持不变,子弹没有发射。

以下是我尝试遵循的教程:https://www.youtube.com/watch?v=mvlwZs2ehLU

1 个答案:

答案 0 :(得分:4)

我注意到在实例化之后你实际上并没有将bullet精灵添加到你的场景中。请务必添加addChild(bullet)。我建议实施类似的东西:

func fireBullet() {

    let bullet = SKSpriteNode(imageNamed: "bullet")
    bullet.setScale(1)
    bullet.zPosition = 1
    bullet.position = player.position
    addChild(bullet)

    let moveBullet = SKAction.moveTo(y: self.size.height + bullet.size.height, duration: 1.0)
    let deleteBullet = SKAction.removeFromParent()
    let bulletSequence = SKAction.sequence([moveBullet, deleteBullet])
    bullet.run(bulletSequence)

}