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

时间:2018-03-06 14:52:32

标签: swift xcode sprite-kit sprite skspritenode

输出的

1图像位于此处

我很擅长使用swift进行编码,代码'工作'从某种意义上讲,在这种情况下,其中一个精灵会出现“播放按钮”#34;但是我根本无法出现。

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

我已经包含了下面的代码(我已经包含了整个文档,但关键区域将是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)
            }   
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我假设您不了解默认锚系统在Spritekit中的工作原理。

enter image description here

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

所以你在self.anchorPoint = CGPoint.zero 的播放按钮上设置一个位置,将播放按钮设置为偏离中心3个像素(不是很多)。

假设您想要场景底部的地面,并且您在屏幕中央的播放按钮可以像这样放置

int32_t cint;
cint = strtol(ss.str().c_str(), NULL, 0);

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

值得注意的是,您可以使用

将场景定位点更改为左下角
0xffffffff

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

的情况