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,我们来看一下效果吧:

时间: 2024-12-22 08:32:56

SpriteKit给游戏弹跳角色添加一个高度标示器的相关文章

PuTsangTo-单撸游戏开发04 给角色添加基本动画

一. 跳跃与移动的优化与完善 先给上一次的内容做一次补救,也就是上一次中还留存的,由于键盘按键事件的第一次回调与后续回调之间会间隔个小半秒带来的跳跃落地后动作延迟的情况. 最终的键盘按下回调的处理代码是这样的: onKeyPressed: function (keyCode, event) { switch(keyCode) { case cc.KEY.left: this.direction = 'idle_left'; if (this.stay) { this.move = 'move_l

代码添加一个按钮及监听方法

有时候无法从控件中拖拽一个按钮到storyboard,必须用编写代码方式添加按钮: 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 // Do any additional setup after loading the view, typically from a nib. 5 //计算出展示表情区域的宽和 展示区距顶部的高度+10个偏移量 6 //添加按钮 9 //创建button 10 addBtn = [[UIButton alloc

跑酷游戏的角色控制设计经验

你可能想制作一款超现实主义基于立体像素的第一人称的跑酷游戏.你正努力制定一个产品计划.哪个环节最耗时?图像?声音?还是关卡设计?我打赌一定是角色控制.我还打赌这会耗费4年半的时间,为什么? 跑酷游戏的玩家移动极为重要,需要大量时间才能摸准正确的感觉. 每款游戏都有自己的特点,你绝对找不到解释如何针对你自己的游戏展开设计的文章或攻略.你只能自己摸着石头过河. 也就是说,每款游戏都有一些值得借鉴的智慧和经验.在此以我自己的亲身经历为例. 制作角色 你是一名程序员,但在处理GIMP的时候也能如鱼得水,

我的虚幻4之旅02 添加一个ACharacter

在第一节中我们知道ACharacter是一个玩家控制人形的Pawn. 默认带有胶囊体碰撞和移动组件.这节我们添加一个自定义pawn,并且实现上下左右移动(兴奋吧.可以移动哦) 1.首先添加一个类FPSCharacter继承Character. 2.在GameMode中引入#include "FPSCharacter.h"然后在GameMode的构造函数里添加 DefaultPawnClass = AFPSCharacter::StaticClass(); 3.打开FPSCharacte

50个jQuery插件可将你的网站带到另一个高度

Web领域一直在发生变化并且其边界在过去的每一天都在发生变化(甚至不能以小时为计),随着其边界的扩展取得了许多新发展.在这些进步之中,开发者的不断工作创造了更大和更好的脚本,这些脚本以插件方式带来更好的终端用户体验,它们比原来更轻量级,还有更强的处理能力. 关键是这些新发展起来的脚本和插件是能构建响应式Web的,而且还不会丧失它们原有的功能特性——除了更优秀和更轻巧(就文件大小而言)之外,它们还不会增加页面加载的时间. 通过浏览文档,掌握JQuery的语法是很容易的.它可以支持选择DOM元素,创

为MS SQL 2005添加一个用户admin

在Microsoft SQL Server 2005中,为数据库InterLib添加一个管理员(owner)用户admin.效果如下: 操作如下: 1)先以"Windows 身份验证"进入数据库引擎SQL 2005: 2)点开数据库结点-->安全性/登陆名-->右击"登陆名"-->新建登陆名-->SQL Server身份认证-->登陆名:admin,密码:333555,取消"强制实施密码策略",默认数据库选择&quo

在ScrollView添加一个ListView造成的滚动问题的简单解决办法()

正常来说,在ScrollView添加一个ListView后在真机上只会显示ListView的一行多一点,我也不理解为什么会这样,后来我把ListView的layout_height改成400dip,而不是用match_parent和wrap_content,我发现这样的话ListView就显示的多了很多.所以就产生了把ListView所有的item的高度算出来给ListView设置的想法.下面是代码: Java代码 public void setListViewHeightBasedOnChil

ScrollView中添加一个android:fillViewport="true"(转)

http://www.2cto.com/kf/201208/148262.html ScrollView中的组件设置android:layout_height="fill_parent"不起作用的解决办法 在ScrollView中添加一个android:fillViewport="true"属性就可以了.顾名思义,这个属性允许 ScrollView中的组件去充满它. 例子,在ScrollView下加入的组件,无论如何也不能自动扩展到屏幕高度. 布局文件. [html

我的虚幻4之旅01 添加一个GameMode到项目

GameMode: 我们创建一个游戏模式.一种游戏模式包含了游戏本身的定义,如游戏规则,胜利条件,并设置默认类使用的一些基本的游戏框架类型,包括棋子,playercontroller,住房和城市发展部. 首先,我们要使用C++类向导添加一个新的类,我们的项目. 1.在菜单栏我们选中添加类到项目,定义为FPSGameMode 2.打开我们的编辑器找到我们创建的类 3.系统自动创建的类中包含GENERATED_BODY()这个方法改成GENERATED_UCLASS_BODY().GENERATED