2015-11-24 4 views
0

Я попытался подкласса SKSpriteNode в GameObject, и я хотел бы создать объекты вне класса сцены игры. Вот мой GameObject код, полученный из SKSpriteNode:Как добавить SKSpriteNode в сцену в Swift?

import SpriteKit 

public class GameObject: SKSpriteNode { 

    init(texture: SKTexture?, color: UIColor, size: CGSize, position:CGPoint, name:String) 
    { 
     objectSize = size; 
     objectName = name; 
     objectSprite = texture; 
     //call superclass here 
     super.init(texture: texture, color: color, size: size); 
     self.position = position; 
    } 

    convenience init(_ _x:CGFloat, _ _y:CGFloat, _ _object:String)// Default initializer 
    { 
     let texture = SKTexture(imageNamed: _object); 
     let position = CGPoint(x:_x, y:_y); 
     self.init( texture: texture,color: UIColor(),size: texture.size(), position: position, name: _object); 
    } 

    //Overloaded initializer with size as extra argument 
    convenience init(_ _x:CGFloat, _ _y:CGFloat, _ _size:Int, _ _object:String) 
    { 
     //size for the SKSpriteNode. 
     let texture = SKTexture(imageNamed: _object); 
     let position = CGPoint(x:_x, y:_y); 
     self.init( texture: texture, color: UIColor(), size: CGSize(width: _size, height: _size),position: position, name: _object); 
    } 

Чтобы создать экземпляр игрока, полученный из GameObject, я должен написать:

let player = PlayerShip(100, 100, "PlayerShip") 
addChild(player) 

Однако addChild() не работает за пределами gameScene. Моя цель - создать пули из класса PlayerShip, но я не могу понять, как это сделать. У кого-нибудь есть предложение?

+0

Из вопроса непонятно, что вы хотите сделать. В какой момент вы называете этот метод 'addChild'? И еще код, где вы его называете. Опишите цель создания объектов более подробно. Значит, вы не создаете их на сцене и в другом объекте, а затем добавляете их на сцену? –

ответ

1

Если вы хотите сделать это за пределами GameScene, вам нужно иметь глобальное свойство вида go, которое имеет ссылку на GameScene. Затем вы можете позвонить:

myGameScene.AddChild(player) 
Смежные вопросы