-2

有人可以为我编写代码,请如何快速添加覆盖开始场景?

我想在 Flappy Bird 中添加一个 startMenu,然后当您单击播放时,它只会移动/消失,然后游戏就开始了。有人可以帮我实现这个效果吗?

期待实现这一目标。

我将不胜感激!

4

1 回答 1

1

在询问有关堆栈溢出的问题时,尝试发布一些您迄今为止尝试过的代码,人们往往不会为您编写代码。

你基本上可以通过两种方式做到这一点。

1)

当按下播放按钮时,创建一个 StartScene 并使用您喜欢的 SKTransition 转换到 GameScene,例如 SKTransition.crossFade

2)

如果您想在同一个场景中执行此操作,您只需创建一个 SKNode/SKSpriteNode 类用作菜单。

class Menu: SKSpriteNode {

     lazy var playLabel: SKLabelNode = {
        let label = SKLabelNode(fontNamed: "HelveticaNeue")
        label.text = "Play"
        label.fontSize = 22
        label.fontColor = .yellow
        label.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
        return label
     }()

     /// Init with size
     init(size: CGSize) {
          super.init(texture: nil, color: .red, size: size)

          addChild(playLabel)
     }
}

}

与在您的 GameScene 场景中相比,您可以使用您喜欢的大小添加菜单,在本例中是场景的大小。

 class GameScene: SKScene {

     lazy var menu: Menu = Menu(size: self.size)

     override func didMove(to view: SKView) {

           addChild(menu)
     }
 }

您可以为该菜单类添加其他 UI 节点,包括按钮精灵等。

比在 GameScene 中的 touches Began 中,您可以查找被触摸的节点,例如播放按钮,而不是执行您的操作,例如为菜单设置动画

 let action1 = SKAction.fadeAlpha(to: 0, duration: 0.5)
 let action2 = SKAction.removeFromParent()
 let sequence = SKAction.sequence([action1, action2])
 menu.run(sequence)

如果你卡在那里并且想要更多的编码示例,你应该谷歌如何做到这一点,这是你需要知道的基本 SpriteKit 东西,并且有很多可用的教程。这包括如何使用 SKSpriteNodes 制作按钮子类的示例。

希望这可以帮助

于 2016-11-19T13:28:09.880 回答