SpriteKit给游戏弹跳角色添加一个高度标示器

时间:2021-02-10 06:41:12

这是一个类似于跳跃涂鸦的小游戏,主角不断吃能量球得到跳跃能量向更高的地方跳跃,如果图中碰到黑洞就挂了…

在游戏调试过程中如果能实时知道主角的高度就好了,这将有助于程序猿动态的判断游戏胜败逻辑.

你可以用print将高度显示在控制台中,不过这观看起来可不是太方便,索性就让我们把高度标示和游戏主角自己紧密结合起来吧! ;]

因为在SpriteKit中任何SKNode对象及其子对象都可以包含孩子,它们可以和父节点一起移动,旋转,缩放…这正是我们想要的效果.

首先,在创建游戏主角的代码后面新增如下代码:

//在player上方添加一个显示高度的标签
        let label = SKLabelNode(fontNamed: "Copperplate")
        label.horizontalAlignmentMode = .Center
        label.verticalAlignmentMode = .Top
        label.position = CGPoint(x: 0, y: self.size.height/2.0 + 20)
        label.fontSize = 20.0
        label.fontColor = SKColor.whiteColor()
        label.text = "\(self.position.y)"
        label.name = "heightLabel"
        self.addChild(label)

有人会问label的位置为什么是(0,size.height/2.0 + 20.0),因为其父节点锚点在纹理的中心位置,即(0.5,0.5),所以label.position.x = 0表示x轴处在中心位置,而y轴处在游戏主角顶部往上20点的位置.

最后我们还要实时刷新该数组,在GameScene的update方法中加入以下一行:

if let label = playerNode!.childNodeWithName("heightLabel") as? SKLabelNode{
                label.text = "\(Int(playerNode!.position.y))"
            }

编译运行App,我们来看一下效果吧:

SpriteKit给游戏弹跳角色添加一个高度标示器