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

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpriteKit给游戏弹跳角色添加一个高度标示器相关的知识,希望对你有一定的参考价值。

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

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

你可以用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给游戏弹跳角色添加一个高度标示器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SpriteKit 使球仅垂直弹跳而不是水平弹跳?

在 SpriteKit 游戏中计算速度

Spritekit 添加音效

通过在 SpriteKit/Swift 中向上滑动来跳跃角色

位置:粘性 - 与javascript高度调整结合使用时滚动弹跳

如何在 iOS SpriteKit 中添加滚动背景效果。