swift - 节点在背景后面生成,我无法将它们带到前面

标签 swift background sprite-kit repeater nodes

我正在使用重复 Action 。当应用程序首次加载时, Sprite 会在背景前面生成,因此您可以看到它们。但是当你从得分场景重新启动游戏时,节点会在背景后面生成,我无法让它们出现在前面。有谁知道我该如何解决这个问题?

    override init(size: CGSize) {
    super.init(size: size)

    //Background
    for var index = 0; index < 2; ++index {
        let bg = SKSpriteNode(imageNamed: "background")
        bg.position = CGPoint(x: -100, y: index * Int(bg.size.height))
        bg.anchorPoint = CGPointZero
        bg.name = "background"
        self.addChild(bg)
    }
     runAction(SKAction.repeatActionForever(SKAction.sequence([SKAction.runBlock(callEnemy), SKAction.waitForDuration(1.0)]))) 

runAction 是重复似乎不起作用的操作的代码

    //Player functions
    foreground = SKNode()
    addChild(foreground)
    player = createPlayer()
    foreground.addChild(player)
    //Game hud
    gameHud = SKNode()
    addChild(gameHud)
}

    func callEnemy() {
    if player.physicsBody?.dynamic == true {
        spawnEnemy()
    }
}

    func spawnEnemy() -> SKNode{

    let enemy = SKSpriteNode(imageNamed: "Enemy1")
    enemy.position = CGPoint(x: frame.size.width * random(min: 0, max: 1), y: 690 )
    addChild(enemy)

    enemy.physicsBody = SKPhysicsBody(circleOfRadius: enemy.size.width / 2)
    enemy.physicsBody?.dynamic = true
    enemy.physicsBody?.allowsRotation = false
    enemy.physicsBody?.affectedByGravity = false
    enemy.physicsBody?.velocity = CGVector(dx: enemy.physicsBody!.velocity.dx, dy: -200.0)
    enemy.physicsBody?.restitution = 1.0
    enemy.physicsBody?.friction = 0.0
    enemy.physicsBody?.angularDamping = 0.0
    enemy.physicsBody?.linearDamping = 0.0
    if enemy.position.y <= CGFloat(0) {
        enemy.removeFromParent()
    }
    return enemy
}

最佳答案

为了让节点位于背景之上,您需要更改它们的 zPosition。如果您指定:

bg.zPosition = 0

foreground.zPosition = 1

前景现在位于背景之上。 zPosition 指定每个节点在 z 轴上的位置。

关于swift - 节点在背景后面生成,我无法将它们带到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910114/

相关文章:

swift - 自定义类型的 ChildNode 在 Swift Playground 上返回 Nil

swift - 等到功能完成

swift - 使用 SpriteKit (Swift) 在 Xcode Playgrounds 中创建按钮

ios - 将元数据添加到视频文件

ios - 匹配 SwiftyJson 中的精确键

ios - 是否可以使用 Xcode 使游戏 Controller 振动?

html - 无论屏幕大小如何,背景图像都适合整个屏幕

ios - Airplay 按钮未显示在带有 AVPlayer 的播放器控件中

css - IE背景大小不起作用

android ftp上传已停止错误