2016-09-07 2 views
0

Я разрабатываю простую 2D-игру и хотел бы использовать счетчик для каждого убитого врага и держать его отображаемым на дисплее до окончания игры.Вставить счетчик врагов убит

Как мне это сделать? Я использую Xcode 7.3.1

Мой Enemies код:

func frecciaInCollisioneConNemico(freccia:SKSpriteNode, nemico:SKSpriteNode) { 
    print("Freccia ha colpito un nemico") 
    freccia.removeFromParent() 
    nemico.removeFromParent() 

    nemiciDistrutti += 1 
    print("hai distrutto \(nemiciDistrutti) nemici") 

    if (nemiciDistrutti >= 20) { 
     let rivela = SKTransition.flipHorizontalWithDuration(0.5) 
     let gameOverScene = GameOverScene(size: self.size, vinto: true) 
     self.view?.presentScene(gameOverScene, transition: rivela) 
    } 
} 
+2

как насчет вашего вопроса с 2013 года? – Wain

+0

Я не собираюсь отвечать на это, и я надеюсь, что никто не сделает этого, потому что это простая проблема, которую вы можете решить без помощи сообщества. Начните новый проект Sprite Kit, который научит вас отображать текст на сцене. Я предполагаю, что nemiciDistrutti - ваш счетчик вражеских убийц, просто поставьте 2 вместе, и у вас есть ответ. – Knight0fDragon

+0

Похоже, вы _did_ ответили на вопрос – 0x141E

ответ

1

Вы должны быть в состоянии ответить на этот вопрос самостоятельно, поскольку это очень легко.

Создать этикетку

class GameScene: SKScene { 

    let enemiesKilledLabel = SKLabelNode(fontNamed: "HelveticaNeue") 

    override func didMoveToView(view: SKView) { 
     loadEnemiesKilledLabel() 
    } 

    private func loadEnemiesKilledLabel() { 
     enemiesKilledLabel.position = ... 
     enemiesKilledLabel.text = "0" 
     ... 
     addChild(enemiesKilledLabel) 
    } 
} 

чем в функции смерти вы просто обновить текст.

... 
nemiciDistrutti += 1 

enemiesKilledLabel.text = "\(nemiciDistrutti)" // update text 

Это называется строка интерполяцией, вы можете прочитать об этом здесь

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

В наконечнике вы должны изменить метод столкновения принять в опциях. Может быть случай, когда 1 столкновение вызывает несколько контактов, потому что несколько частей тела столкнулись. Ваш код не учитывает это, и поэтому вы можете сбой, если frecciaInCollisioneConNemico вызывается несколько раз подряд.

Изменить его к этому

func frecciaInCollisioneConNemico(freccia: SKSpriteNode?, nemico: SKSpriteNode?) { 

    guard let freccia = freccia, nemico = nemico else { return } 

    freccia.removeFromParent() 
    nemico.removeFromParent() 
    ... 
} 

Наконец я бы порекомендовал вам попробовать написать код только на английском языке.

Надеюсь, это поможет

+0

Он этого не делает. Смена сцены происходит не до тех пор, пока счетчик не достигнет 20. Кроме того, в своем описании он говорит: «... хотел бы использовать счетчик для каждого убитого врага и держать его отображаемым на дисплее, пока игра не закончится». – crashoverride777

+0

Не беспокойтесь ..... – crashoverride777

+0

Привет, я попробую как можно скорее ваше объяснение «crashoverride777». Большое вам спасибо, в следующий раз я напишу на английском языке полный код. Что касается доброго ответа «Knight0fDragon», скажите только, что если бы я задал этот вопрос, потому что я не мог найти решения в Интернете, но только новичок, может быть, вы абсолютный гений, и никто не родился ученым. Еще раз спасибо тем, кто помог мне. – Jollyvideos

Смежные вопросы