Я попытался подкласса 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
, но я не могу понять, как это сделать. У кого-нибудь есть предложение?
Из вопроса непонятно, что вы хотите сделать. В какой момент вы называете этот метод 'addChild'? И еще код, где вы его называете. Опишите цель создания объектов более подробно. Значит, вы не создаете их на сцене и в другом объекте, а затем добавляете их на сцену? –