Как добавить SKSpritenode в SKView из GameViewController? - PullRequest
0 голосов
/ 25 августа 2018

Привет, я новичок в Swift и SpriteKit в общем, в любом случае я пытаюсь сделать игру для проекта.Я перетащил кнопку на Main.storyboard и подключил ее код к GameViewController.swift

Мой код кнопки и текущая попытка ниже,

@IBAction func TroopB1(_ sender: AnyObject) {
    let newGS = GameScene()
    newGS.spawnEnemy()
}

Теперь я хочу сделать следующее:вызовите функцию в GameScene.swift, которая создает SKSpriteNode (определенный в моем классе игрока), и добавьте ее в Game.

Код функции, который находится в GameScene.swift, приведен ниже:

func spawnTroop() {
    let newTroop = Player(imageNamed: "Troop1")
    newTroop.loadtroop()
    self.addChild(newTroop)
}

Класс Player определяется как SKSpritNode, а loadtroop просто определяет некоторые атрибуты и физическое тело SKSpritenodes.

Может кто-нибудь помочь мне рассказать, как вызвать функцию spawnTroop (), которая есть в GameScene, из функции кнопки - TroopB1 - в GameViewController.swift и создать новый SKSpritenode в моей игре, поскольку все попытки пока что имеютбыл неудачным?

1 Ответ

0 голосов
/ 25 августа 2018

Вы назвали spawnEnemy() после того, как создали новую сцену, подобную этой:

let newGS = GameScene()

Новая созданная вами сцена - это не та сцена, которая представлена ​​в SKView.Вы породили отряд в этой сцене, а не в представленной сцене.

Один из способов доступа к представленной сцене заключается в следующем:

((self.view as? SKView)?.scene as? GameScene).spawnTroop()

Сначала мы получаем доступ к представлению, которым VC управляет какSKView, затем получите доступ к сцене, представленной в виде как GameScene, затем мы вызываем метод.

...