多个精灵节点,只出现一个

问题描述 投票:0回答:1

1输出图像位于此处

我对swift中的编码很新,而且代码“工作”的意思是其中一个精灵会在这种情况下出现“播放按钮”但是我无法完全出现。

我不知道这是否仅仅是因为我采取了错误的方法或使用了错误的方法,但经过一些研究后我仍然陷入困境,所以我转向你们。

我已经包含了下面的代码(我已经包含了整个文档,但关键区域将是didMove to view部分,其中包括其余部分,因为它可能是相关的)。正如我所说,其中一个精灵确实出现但另一个却没有(无论我如何改变这些值)。

任何帮助将不胜感激。

public class GameScene: SKScene {

    let background = UIImage(named: "Sky")
    let playButton = SKSpriteNode(imageNamed: "Play Button")
    let ground = SKSpriteNode(imageNamed: "Ground")
    let groundPoint = CGPoint(x: 0, y:2)

    override public func didMove(to view: SKView) {

        self.playButton.position = CGPoint(x: 1, y: 2)
        self.ground.position = CGPoint(x: self.frame.width / 2, y: self.frame.height / 3)

        self.addChild(playButton)
        self.addChild(ground)

        self.backgroundColor = UIColor.white
    }

    override public func touchesBegan(_ touches: Set<UITouch>, with event: 
    UIEvent?) {
        for touch: AnyObject in touches{
            let location = touch.location(in: self)
            if (self.atPoint(location) == self.playButton) {
                let skView = self.view as! SKView
                skView.ignoresSiblingOrder = true

                let scene = PlayScene(size: self.size)
                scene.scaleMode = .resizeFill
                scene.size = skView.bounds.size

                skView.presentScene(scene)
            }   
        }
    }
}
swift xcode sprite-kit sprite skspritenode
1个回答
0
投票

我假设您不了解默认锚系统如何在Spritekit中工作。

enter image description here

默认情况下,使用anchorPoint 0.5,0,5创建场景和所有对象。它将所有新对象放在屏幕的直接中心。

所以你在CGPoint(x: 1, y: 2)的播放按钮上设置一个位置就是将播放按钮设置为偏离中心3个像素(不是很多)。

假设您希望场景底部的地面,以及屏幕中央的播放按钮,您可以将其布局

playButton.position = CGPoint(x: 0, y: 0) //or CGPoint.zero or nothing at all since by default it will get placed in the center
playButton.zPosition = 1
self.addChild(playButton)

ground.position = CGPoint(x: 0, y: 0 - self.size.height / 2 + ground.size.height / 2)
ground.zPosition = 1
self.addChild(ground)

我知道你已经指定忽略兄弟顺序,但我认为指定zPosition是一种更好的做法。

值得注意的是,您可以通过使用将场景锚点更改为左下角

self.anchorPoint = CGPoint.zero

这可能是您的zPosition设置不如关闭位置的情况

© www.soinside.com 2019 - 2024. All rights reserved.