2016-08-04 53 views
1

对于swift编程语言来说我相当新,最近我开始关注Youtube教程来创建一个太空射击游戏。然而,我很好奇的一件事(教程中未提及)是如何为子弹的数量添加限制。需要帮助,Swift 2.0 SKSpriteNode

import SpriteKit 

//Declaring Player 
let player = SKSpriteNode(imageNamed: "playerShip") 

class GameScene: SKScene { 

    override func didMoveToView(view: SKView) { 

     //Declaring Background 
     let background = SKSpriteNode(imageNamed: "background") 

     //Setting Properties For Background 
     background.size = self.size 
     background.position = CGPoint(x: self.size.width/2, y: self.size.height/2) 
     background.zPosition = 0 
     self.addChild(background) 


     //Setting Properties For Player (Already Declared) 
     player.setScale(1.3) 
     player.position = CGPoint(x: self.size.width/2, y: self.size.height * 0.20) 
     player.zPosition = 2 
     self.addChild(player) 

    } 

    func fireBullet(){ 

     //Setting Properties & Declaring Bullet 
     let bullet = SKSpriteNode(imageNamed: "bullet") 
     bullet.setScale(1) 

     bullet.position = player.position 
     bullet.zPosition = 1 
     self.addChild(bullet) 

     //Moving and Deleting Bullet 
     let moveBullet = SKAction.moveToY(self.size.height + bullet.size.height, duration: 1) 
     let deleteBullet = SKAction.removeFromParent() 
     let bulletSequence = SKAction.sequence([moveBullet,deleteBullet]) 
     bullet.runAction(bulletSequence) 


    } 

    //This function will run when screen is touched 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     fireBullet() 

    } 

} 
+0

这是限制玩家所拥有的子弹总数或可以同时使用的数量吗?如果它是前者,那么appz的答案是好的。如果是后者,那么当玩家重新达到极限并尝试再次发射子弹时会发生什么?最老的一个消失了,还是可以在现有的子弹熄灭屏幕之前不能开火? –

回答

2

如果你想限制子弹的玩家可以出手总数,那么你就可以创建GameScene代表剩余的子弹

class GameScene: SKScene { 
    private var remainingBullets = 10 
    ... 

接下来,当fireBullet()调用你的号码属性需要检查是否有剩余的子弹可用。如果是这样,fireBullet()执行可以继续,否则return

你需要减少的最后一件事remainingBullets

func fireBullet(){ 
    guard remainingBullets > 0 else { 
     print("No more bullets") 
     return 
     } 
    /// .... Do shooting stuff in here ... 
    //... 
    remainingBullets -= 1 
}