多次添加SKSpriteNode但位置不同

时间:2014-09-11 13:28:41

标签: swift sprite-kit skspritenode

我试图将相同的SKSpriteNote四次添加到相同的场景中,但我无法确切地知道如何做到这一点。

我找到了旧教程,但我很难在swift中成功实现它。

GameScene.swift

import SpriteKit

class GameScene: SKScene {

var brick = SKSpriteNode(imageNamed: "brick")

func addBricks(size:CGSize){
    for var i = 0; i < 4; i++ {

        // Brick settings
        self.brick.physicsBody = SKPhysicsBody(rectangleOfSize: brick.frame.size)
        self.physicsBody!.dynamic = false

        // Brick positioning
        var xPos = brick.size.width/5 * (i + 1)
        var yPos = brick.size.height - 50
        self.brick.position = CGPointMake(xPos, yPos)

        self.addChild(brick)
    }
}

override func didMoveToView(view: SKView) {

    self.addBricks(size)

    }

}

我在创建var xPos = brick.size.width/5 * (i + 1)时收到错误。

我想达到的预期最终效果更像是这样。

enter image description here

请告知,谢谢。

1 个答案:

答案 0 :(得分:1)

我设法解决了这个问题,但我不确定代码优化......不知何故它可行:)

如果有人知道如何制作更简单,请告诉我。这是最终的代码。

    func addBricks(size:CGSize){
    for var i = 0; i < 4; i++ {

        let brick = SKSpriteNode(imageNamed: "brick")

        // Brick settings
        brick.physicsBody = SKPhysicsBody(rectangleOfSize: brick.frame.size)
        brick.physicsBody!.dynamic = false

        // Brick positioning
        var xPos = size.width/5 //CGFloat
        var xPosInt = Int(xPos) * (i + 1) // Int
        xPos = CGFloat(xPosInt) // Convert to CGFloat again
        var yPos = size.height - 50

        brick.position = CGPointMake(xPos, yPos)

        self.addChild(brick)


    }
}

根据需要获得最终结果。 enter image description here