2017-05-26 191 views
-1
func createBall(){ 
     ballS = SKNode() 
     let ball = SKSpriteNode(imageNamed: "Ball") 

     saw.zPosition = 2 
     ballS.addChild(ball) 
     self.addChild(ballS) 
} 

这会创建一个z节点为2的Ball节点。但是在运行游戏时,我想要创建另一个z位置为1的球。我该怎么做,或者我有使一个全新的功能,使一个球节点与z位置1?如何更改节点值

+0

是不是只是继承SKSpriteNode的问题? –

+0

什么是“自我”? –

+0

我更喜欢不创建子类 - 而自己是类GameScene - 也只是决定在类中添加一个int,并添加了一些像'if counter == 2 {saw.zPosition = 1} else {saw.zPosition = 2}' –

回答

-1

我建议使用的参数,如:

func createBall(z: Int) { 
    ballS = SKNode() 
    let ball = SKSpriteNode(imageNamed: "Ball") 

    saw.zPosition = z 
    ballS.addChild(ball) 
    self.addChild(ballS) 

}

而且使用它作为:

createBall(z: 2) 
+0

不知道我为什么被低估,欢迎任何反馈。 – sabi

+0

我向你投了票,但它不会显示,因为我的声望很低。谢谢! –

0

如果每个ball精灵必须的孩子ballS节点,那么你可以做到以下几点。

定义球的属性(在class定义后,即而在此之前的任何功能)

let balls = SKNode() 
didMove(to:)

,添加ballS节点:

addChild(ballS) 

创建addBall功能:(唐” t叫它createBall除非它确实创造了球)

func addBall(withZPosition zPos: Int) { 
    let newBall = SKSpriteNode(imageNamed: "Ball") 
    newBall.zPosition = zPos 
    ballS.addChild(newBall) 
    } 

然后只需拨打addBall(withZPosition:)创建并添加一个新球:

addBall(withZPosition: 2) 

如果要对创建的球更多的控制(例如,你想将它添加到场景)之前改变一些它的属性,你可以做一个createBall功能,创建一个新的球,并返回新节点:

func createBall(withZPosition zPos: Int) -> SKSpriteNode { 
    let newBall = SKSpriteNode(imageNamed: "Ball") 
    newBall.zPosition = zPos 
    return newBall 
    } 

,并以此作为如下:

let newBall = createBall(withZPosition: 2) 
newBall.size = CGSize(x: 50, y:50) 
ballS,addchild(newBall) 
0

U可以有一个全局变量,因此,只要你想改变u盘上并创建球

所以创建一个变量

var myZposition = 2 

,并在didmove开始创建一个球通过调用createBall查看()

func createBall(){ 
    ballS = SKNode() 
    let ball = SKSpriteNode(imageNamed: "Ball") 

    saw.zPosition = myZPosition 
    ballS.addChild(ball) 
    self.addChild(ballS) 
} 

再经过这些,如果你想改变z位置设置它在didmove年底,查看

myZposition = 1 

然后,每当ü创建从这里你的球会z位置是1。这将是一个简单的设置,如果你有很多球和实施z位置的改变对达到游戏 希望的特定区域,这有助于

+0

谢谢!我赞成你,但我没有足够的声誉来展示。抱歉! –

+0

没关系,很高兴有帮助。 –