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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个精灵节点,只出现一个相关的知识,希望对你有一定的参考价值。

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)
            }   
        }
    }
}
答案

我假设您不了解默认锚系统如何在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设置不如关闭位置的情况

以上是关于多个精灵节点,只出现一个的主要内容,如果未能解决你的问题,请参考以下文章

如何控制多个同名精灵套件节点?

如何在片段着色器中平铺部分纹理

快速创建具有相同纹理的多个精灵(节点)

iOS7 SpriteKit 如何对两个或多个精灵节点子节点的动画进行分组?

在节点中使用精灵套件问题进行游戏开发?

具有相同 SKPhysics 身体对象的多个精灵