Intel实感技术植入Cocos2d-x:体感游戏《Badaboom》教程分享!

发表于2015-08-28
评论0 1.6k浏览

在春季CocoaChina开发者大会上,英特尔实感技术事业群中国区总监汤振宇先生透露,目前已将实感技术植入Cocos2d-x引擎,开发者可以下载免费的实感技术SDK。这意味着在不远的将来,体感游戏有可能出现在移动端。

“实感技术将带来全新的用户体验,手势控制、脸部识别、语音输入等,将给大家一种全新的方式与机器进行交流,”汤振宇先生表示,“很高兴英特尔已经开始与Cocos2d-x紧密合作,许多实感技术已结合到引擎里。Cocos2d-x是中国最大的游戏引擎,它的开发人员与用户能够利用这个平台,与我们一起努力把这件事情做大。”

“目前普通游戏里的人物都是上下左右的移动,实际是两维的,我们的游戏却是真正的三维——增加了深度,可控制远近。多了这一维,信息量就提升了很多,带来不同的用户体验与现实场景,可发挥空间得到几何式暴涨,相信三维游戏将非常震撼。”汤振宇先生说道。

事实上,早在5个月之前,便有开发者在www.cocos2d-x.org官网论坛“Game/Demo Showcase”频道提交了一款名为《Badaboom》的体感游戏。该游戏在巴西赛区的英特尔实感技术大赛中获得了第7名。该游戏目前尚未正式面市,但其开发公司“Naked Monkey Games”工作室已发布一篇《How to IntegrateIntel Perceptual Computing SDK with Cocos2d-x》英文教程与开发者共享,下面我们来看一看

版本:SDK(Version9302)C++版本、Cocos2d-x v2.2(Win32)

设置环境:

首先,创建一个Cocos2d项目,怎么创建这些工程并不是这篇文章的重点所以并不再这里赘述,如果你需要对此有进一步了解你能在Cocos2d的wiki上找到 (www.cocos2dx.org/wiki);

简单来说,执行在cocos2d文档的tool文件夹里的Python 的文本创建一个新的工程,并打开Visual Studio工程,现在我们添加Perceptual Computing SDK至项目;

创建一个名为CameraManager的单例的类,它将启动camera, 升级cycle,并在游戏画面中显示两个代表两手位置的图标。

CameraManager是来自UtilPipeline的单例的类,可导入“util_pipeline.h”文件。这里,我们需要重新配置Visual Studio项目中的一些属性。下图显示了如何为英特尔Perceptual Computing SDK添加附加的目录。

$(PCSDK_DIR)/include
$(PCSDK_DIR)/sample/common/include
$(PCSDK_DIR)/sample/common/res

还需要继续添加以下路径至附加的目录库:

$(PCSDK_DIR)/lib/$(PlatformName)
$(PCSDK_DIR)/sample/common/lib/$(PlatformName)/$(PlatformToolset)

在input模板增加依赖关系:

libpxc_d.lib
libpxcutils_d.lib

现在我们就可以开始使用CameraManager了!

开始Coding!

首先我们要将类做成一个单例。这个类能够在代码中的任何地方都能够以相同的实例变量被访问。要做到这个,你可以用一个方法来解决:

然后,我们要创建一个构造函数或构造器,一个启动camera的方法:

许多命令都可初始化那些代表用户手势的sprites变量,当他们的手靠近时收到信号输入。下一步就是处理camera传来的数据。

更具体地说,同样的这个方法你也可以添加switch cases来识别音控指令,或是完成更多的手势。然后,我们需要完善它的信息并将它展示在CCLayer(Cocos2D sprite layer)之中。

这个方法在每一祯屏幕都会被调动一次(大多时候是作为onEnter的回调函数)。它可以将手势sprites从原有的父节点中自动移除,并将它们添加至新的CCLayer。


现在我们的手势sprite已经被添加到了CCLayer,通过引用下面这个CCLayer上用来更新cycle的方法(被这个“this->scheduleUpdate();”所引用的方法)我们就能掌握他们的位置,更新方法如下面所写:

这些代码不仅处理了sprite 的位置,在手只张开20%不到时还将设置另一个不同的 sprite (hand_close.png) 。此外,有个简单的逻辑可以帮助手势的精确性,使得信号输入更加敏感且更容易到达屏幕的边缘。我们做这个,是因为实感Camera并不太能精确地判断到边缘,当我们走到边缘时,sprites很容易就抽风了。

现在,增加一些方法来处理输入是必不可少的(握紧的拳头视为一个触摸),我们需要写一个叫作“checkActionArea”的方法并注册actionArea。

用 registerActionArea() 注册areas:

这样就很简单地将英特尔Intel Perceptual Computing SDK添加到你的Cocos2d游戏了!只要运行:

CameraManager::getInstance()->Start(this);


当进入层的时候, 注册要被调用的对象和方法:

CameraManager::getInstance()->registerActionArea(btn_exit->getPosition(),150, callfuncO_selector(LevelSelectionScene::backClicked));

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引