说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本重写的,目前我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记
OK,到昨天为止,我们已经将游戏基本上写完了,这里本来就是别人开源的东西,我这里重写,当然要公布源码。那么这里有两种方式:
第一种:将我运行成功的整个项目打包,VS2012+win7下的,这种方式就比较大,但是可以打开打开 Run/proj.win32/Run.sln 就可以啦
第二种:就是我只打包 Resource 和 class里面的东西。。但是这里会遇到 Extension 的相关问题,因为我用了按钮,这个解决方法在前面的 cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--按钮控制主角Jump&Crouch 当中有详细解决方法
或者留下邮箱
已经修复bug,并且共享下载地址已经修改-----2014-8-2
链接: 整个项目 204m ---------- 资源&代码 1.18m
注意一个地方:PlayScene中的crouchEvent函数中,我们需要添加一个判断, 在m_runner->getState() == running 的情况下 再执行 m_runner->Crouch();m_runner->setPosition(.......); 不然在跳起来的情况下,按钮Crouch,主角虽然不会Crouch,可是会 setPosition 改变位置。。。。。。。
只是在昨天还有一个小问题,本来想昨天解决了,然后一起在这里给出。谁知道。。。。哎哎。。问题就是:
我们游戏中,主角撞到岩石,然后切换到GameOver 场景,这个场景中有一个按钮,reStart。重新开始,按下去回调函数是切换为游戏场景。。。但是按钮会失效。。。。但是这里并不是按钮写出问题啦,我在AppDelegate中,用GameOver场景,然后按钮是可以切换到游戏场景。。游戏结束切换到MainScene之后,start按钮又失效啦。。。这里也问了不少人,但是由于个人描述不清,所以没有得到解决,这里希望下载源码的各位能找到解决方法,与我以及大伙分享下。。。
哈哈哈,仰天长啸。bug解决啦,其实就是在碰撞检测中添加事件派发的时候出了问题:
错误的代码修改:
<span style="font-size:14px;">void PlayScene::onEnter(){
Layer::onEnter();
auto contactListenner = EventListenerPhysicsContact::create();
//CC_CALLBACK表示回调函数的参数个数
contactListenner->onContactBegin = CC_CALLBACK_1(PlayScene::onContactBegin,this);
//dispatcher = Director::getInstance()->getEventDispatcher();//这里不再使用自己弄的事件派发
//_eventDispatcher应该是一个时间派发的全局变量。。全部给它管理就是的
_eventDispatcher->addEventListenerWithSceneGraphPriority(contactListenner,this);
}</span>
新的完整工程项目已经打包,上面的下载地址也都更新啦......啦啦啦,终于可以安心的弄下一个游戏实例啦
总结:其实学习过程中,个人认为最有效的方法就是:学习了知识点,然后用实例练习,而且在实例练习当中。我们应该是先了解设计思想,然后自己先试着实现,过程中可能会遇到很多问题,你可以查看源码,单独抽离部分功能成一个例子测试,或者百度&问大牛们。。。。而不是一有点问题就到处问,用我们一位老师的话来说就是:学会自学将让你受益终生。
OK,个人愚昧观点,欢迎指正与讨论