cocos2d-x
文章平均质量分 75
尹成
尹成微信18510341407,助理微信18514203048
展开
-
传智播客C/C++学员荣膺微软&Cocos 2d-x黑客松最佳创新奖
6月30日,历时32小时的微软开放技术Cocos 2d-x 编程黑客松在北京望京微软大厦成功落下帷幕,这是微软开放技术首次联合Cocos 2d-x 在中国举办黑客松。此次活动共有包括传智播客C/C++学院的学员组成的闪游队,以及Hurry队、繁星队等在内的18个团队,70人参加了这场开发盛事,参赛团队中,不乏经验丰富的一线手游团队。“太空大战”项目演示 微软开放技术Cocos 2d-x 编程原创 2014-07-03 16:19:13 · 5148 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽10-怪物与马里奥冲突检测
在超级玛丽游戏中,马里奥在移动,怪物也在移动,当他们遇见时,需要判断是马里奥身亡还是怪物身亡。这个判断的代码在怪物类的检测函数实现中。比如蘑菇怪的冲突检测函数:bool CMMonsterMushrooms::OnCollisionMario(){ do { CCNode* pMushrooms = dynamic_cast(getChildByTag(enTagMainNode));原创 2014-02-15 19:59:59 · 4717 阅读 · 1 评论 -
cocos2dx进阶学习之CCAction
CCAction在cocos2dx中,抽象了节点的动作。它由CCObject派生,因此它不是渲染节点。它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它。在马里奥代码里,执行马里奥跳跃的代码如下://增加跳跃运动 CCJumpTo *pJump = CCJumpTo::create(_MARIO_BASIC_JUMP_TIME_,ccp(getPosi原创 2014-02-14 17:22:52 · 2757 阅读 · 0 评论 -
cocos2dx进阶学习之CCBI文件
在马里奥这个游戏里,我们用到了几个ccbi文件,比如蘑菇怪,马里奥等,下面是加载马里奥代码从这个代码可以看出,马里奥不是个精灵,是一个CCNode对象,是CCBReader对象从一个文件读出来的CCNode,那mario.ccbi究竟是什么文件呢?ccbi文件是cocosbuilder软件制作的场景资源,现在可以包含动画,像mario.ccbi就包含了一些动画在里面。资源的加载:ccbi资源的加载原创 2014-02-14 16:22:29 · 12061 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动
在游戏中,很多怪物本身是会移动的,这里主要有蘑菇怪,乌龟等。原创 2014-02-14 15:53:45 · 3920 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(三)-按键处理
在地图初始化好了之后,就开始移动马里奥吧,我在windows下,是使用键盘来移动马里奥的w是跳,d是前进,a是后退,那么在程序里是怎么来获取这个按键的呢?普通的windows程序,在按键之后,会有个win32消息发送到应用程序,但是cocos2dx里,没有用这个机制,而是在帧刷新函数中,主动去获取按键状态根据状态来对马里奥进行处理。帧刷新函数是在CMGameScene类中注册的,还记得CMGame原创 2014-02-13 11:03:27 · 3815 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽08-消息机制
在超级玛丽游戏里,地图类CMGameMap负责所有的程序逻辑,它包含了背景地图,包含了游戏元素精灵,当游戏中的精灵之间发生碰撞时,比如马里奥撞上砖头这种事情发生时,马里奥对象本身不知道怎么处理这个逻辑,这个时候需要有一个机制,让马里奥通知地图对象,去处理这个游戏逻辑,这种通知机制,在cocos2dx中并没有提供。在马里奥游戏里,提供了这个机制,我认为值得好好学习。一般说来,由于地图对象包含了所有的原创 2014-02-13 15:23:25 · 3391 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(二)
在了解地图的初始化和加载之前,我们先了解下mario的地图。用tiled工具打开mario地图从地图中可以看到,mario的地图有很多层构成:objects层:怪物,会动的怪物coin层:金币trap层:陷阱block层:砖头,砖头有好几种,带问号的,普通砖头,拦路的等等pipe层:水管flagpole层:终点旗帜land层:承重的路面mountain层:远处的山cloud层:天上的云backgr原创 2014-02-13 10:29:11 · 3966 阅读 · 1 评论 -
cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(六)-马里奥跳跃
当w键按下时,马里奥执行跳跃动作执行跳跃动作也是在MarioMove函数中调用的实际的跳跃则调用了mario对象的OnCtrlJump函数,来看看OnCtrlJump函数吧void CMMario::OnCtrlJump(){ //根据马里奥当前状态 来处理 switch(m_eCurMarioStatus) { case enMarioStatusStandLeft: //待机 和 跑原创 2014-02-13 14:09:55 · 5249 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(四)-马里奥平移
上一篇博文提到,程序如何获取键盘输入,也就是D键按下,程序获取到前进指令,那么获取到前进指令之后,马里奥是如何前进的呢,这篇文章我们重点讨论这个问题。马里奥的移动,依旧是在帧刷新函数中,这个调用过程上个博文说过,这里不再重复,简单来说就是CMGameScene::OnCallPerFrame调用CMGameMap::OnCallPerFrame,再调用CMGameMap::MarioMove函数,原创 2014-02-13 11:58:16 · 5314 阅读 · 1 评论 -
cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(五)-地图卷动
马里奥在平移的过程中,涉及到地图的卷动问题。在这个游戏里,地图比窗口大,窗口只是显示了地图的一部分,因此马里奥在移动的时候,移动到一定位置之后要卷动地图,否则马里奥移动到窗口右边之后......那结果将会很难看。卷动地图的原理在于,将地图的放在窗口的位置变化下。如下图所示地图在何时卷动呢?这个看我们的设计,在我们的代码中,卷动是这么实现的:当右键按下,也就是前进键按下时,马里奥就向前移动,移动结束原创 2014-02-13 13:48:05 · 3580 阅读 · 0 评论 -
cocos2dx进阶学习之CCSpriteBatchNode
继承关系CCSpriteBatchNode -> CCNode, CCTextureProtocol成员变量inline CCTextureAtlas* getTextureAtlas(void)inline void setTextureAtlas(CCTextureAtlas* textureAtlas) 获取/设置纹理图集,纹理图集是管理一张大图纹理和区域信息结构体static CCSpri原创 2014-02-11 23:09:28 · 2622 阅读 · 0 评论 -
cocos2dx进阶学习之CCTMXLayer
继承关系CCTMXLayer -> CCSpriteBatchNodeCCTMXLayer是在瓦片地图中,抽象一个层的类,它继承自CCSpriteBatchNode,也就是说它抽象了一批相同图片的精灵,在瓦片地图中,用层来抽象她们。成员函数CCSprite* tileAt(const CCPoint& tileCoordinate);获取该坐标的精灵,这里的坐标是网格坐标unsigned int原创 2014-02-11 13:43:15 · 2797 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap
背景在上一篇博客中,我们提到CMGameScene,但是CMGameScene只是个框架,实际担任游戏逻辑的是CMGameMap类,这个博文就来了解下CMGameMap头文件class CMGameMap : public cocos2d::CCTMXTiledMap ,public CMReceiver{protected: enum { enTagMario = 998,原创 2014-02-10 16:24:05 · 4012 阅读 · 1 评论 -
cocos2d-x游戏开发系列教程-超级玛丽06-CMGameScene
背景在CMMenuScene中,当用户点击开始游戏时,导演让场景进入到CMGameScene头文件class CMGameScene : public cocos2d::CCLayer,public CMReceiver{public: // there's no 'id' in cpp, so we recommend returning the class instance pointe原创 2014-02-10 15:59:32 · 3811 阅读 · 1 评论 -
cocos2dx进阶学习之瓦片地图编辑器
之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图步骤1将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是基础纹理步骤2打开软件创建一个新的文件步骤3设置格式,我这里没做设置,按照默认继续步骤4将新的tmx地图另存到图块目录步骤5将图块加入完成之后,在右下角就会看到这个图块的内容步骤6增加图层增加完图层之后,修原创 2014-02-11 14:14:13 · 3876 阅读 · 0 评论 -
cocos2dx进阶学习之CCTMXTiledMap
继承关系CCTMXTiledMap -> CCNode它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象成员static CCTMXTiledMap* create(const char *tmxFile);通过一个文件,创建一个地图对象,这个文件是由工具编辑的地图文件static CCTMXTiledMap* cre原创 2014-02-10 17:04:33 · 2553 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽05-CMMenuScene
代码下载链接http://download.csdn.net/detail/yincheng01/6864893解压密码:c.itcast.cn背景上一篇博文提到appDelegate,在该类的重载函数applicationDidFinishLaunching函数中,程序进入CMMenuScene场景,我们顺藤摸瓜来学习CMMenuScene。类定义头文件class CMMenuScene : p原创 2014-02-10 15:00:21 · 3097 阅读 · 0 评论 -
cocos2dx中的层CCLayer
什么是层,层在cocos2dx里是一个能处理触摸事件的CCNode,因为它负责用户交互,因此大部分游戏细节都在这个类中完成,所以我们经常派生这个图层来完成逻辑交互代码。当然如果你的图层不需要接受交互信息,那么你可以直接使用CCNode来做图层,效率更高触摸处理设置:默认情况下,CCLayer并不接收触摸事件,只有设置了接收触摸事件才能接受触摸CCLayer::setTouchEnabled(tru原创 2014-03-28 12:41:04 · 2658 阅读 · 0 评论 -
cocos2dx中的其他层
在cocos2dx中,CCLayer默认是黑色的,但是有时候需要有其他颜色北京的图层,那么就需要用到CCLayerColor如下代码:ccColor4B color =ccc4(255, 0, 0, 255); // 红色CCLayerColor *layer = CCLayerColor::create(color); // 以红色为参数创建层那么该背景将变成红色另外cocos2dx提供渐变原创 2014-03-28 13:05:15 · 2202 阅读 · 0 评论 -
cocos2dx CCControlSlider
有的同学建议先上图,好吧原创 2014-05-01 21:35:56 · 3433 阅读 · 1 评论 -
cocos2d-x中的尺寸之一
cocos2d-x中的尺寸函数繁多,官方文档对各种尺寸没有很好的描述,网上文章更加寥寥,对尺寸和位置的理解如果不到位,写代码就非常困难,需要猜测尝试,效率低下。这个文章我将研究一些我所迷惑的尺寸函数,记录在此。先看如下代码:bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDir原创 2014-03-23 10:00:01 · 5687 阅读 · 0 评论 -
cocos2dx中的精灵CCSprite
什么是精灵(CCSprite),在官网文档中是这么定义的SpritesA cocos2d CCSprite is similar to sprites you find in other game engines. It is a 2D image that can be moved, rotated, scaled, animated, and undergo other transformat原创 2014-03-24 10:13:34 · 2404 阅读 · 0 评论 -
cocos2d-x中的尺寸之三
通过上面两个文章的分析,我们在这个博文里做个总结:CCEGLView::getFrameSize()返回的是窗口相对于屏幕像素的尺寸,这个尺寸,只要窗口没变化,值就不会变化CCDirector::getWinSize()返回的是窗口自定义像素的尺寸CCDirector::getWinSizeInPixels()返回的是窗口自定义像素的尺寸,经过scale之后的值,跟getWinSize和setCo原创 2014-03-24 09:09:20 · 2438 阅读 · 0 评论 -
cocos2d-x中的尺寸之二
接下来我们再做些坏事,比如给EGLView设置分辨率,代码如下: pEGLView->setDesignResolutionSize(240, 320, kResolutionExactFit); CCSize size; size = pDirector->getWinSize(); CCLOG("width = %f height = %f, pDirector->getWinSize原创 2014-03-24 08:52:58 · 4093 阅读 · 0 评论 -
cocos2d-x中的导演、场景、层和精灵
场景(Scenes)场景在cocos2d-x中是CCScene类实现的,是应用程序流中独立的一部分。一个cocos2dx应用程序可以有许多场景,但是在某一时刻,只有一个场景在运行。For example, you could have a game with the following scenes: Intro, Menu, Level 1, Cutscene 1, Level 2, Winni原创 2014-03-23 01:36:32 · 3272 阅读 · 0 评论 -
cocos2dx 字体
有些时候需要在界面上显示些文字,自然设计dao原创 2014-05-01 16:54:56 · 2378 阅读 · 0 评论 -
cocos2dx 坐标和锚点
cocos2dx中使用opengles的坐标,左下角为坐标原点,原创 2014-05-01 16:47:26 · 2777 阅读 · 0 评论 -
cocos2dx mac环境搭建
1)下载cocos2dx 2.2.3并解压我的目录在$HOME/Document/cocos2dx-2原创 2014-05-01 09:49:49 · 3060 阅读 · 0 评论 -
cocos2dx CCControlSwitch
// on "init" you need to initialize your instancebool ControlSwitch01::init(){ ////////////////////////////// // 1. super init first if ( !MenuLayer::init() ) { return false; }原创 2014-05-01 21:31:14 · 2305 阅读 · 0 评论 -
cocos2dx CCEditBox
CCTextFieldTTF是一个简单的封装,用起来不是那么便利,在cocos2dx的extension里,对输入框有更加简单使用的类,na原创 2014-05-01 21:12:26 · 2643 阅读 · 0 评论 -
cocos2dx 在mac下开发ios和android游戏
这里主要说android,因为ios开发在文章http://blog.csdn.net/itcastcpp/article/details/24792323中yi jing shuo guo原创 2014-05-01 11:50:06 · 2447 阅读 · 0 评论 -
cocos2dx mac下搭建android开发环境
1)下载eclipse原创 2014-05-01 10:29:11 · 3077 阅读 · 0 评论 -
cocos2dx CCTextFieldTTF
CCTextFieldTTF是一个提供文本输入的控件。先上个简单的例子原创 2014-05-01 20:43:28 · 2737 阅读 · 0 评论 -
cocos2dx 字体BMFont,Atlas
为了更加个性化,系统提供的字体,有时候没法满足我们的要求,所以cocos2dxt原创 2014-05-01 17:24:09 · 4123 阅读 · 0 评论 -
cocos2dx CCLayerColor和CCLayerColor
在cocos2dx中,默认的CCLayer背景是黑色的,有些时候需要bu to原创 2014-05-01 15:37:54 · 2489 阅读 · 0 评论 -
cocos2dx tag和zorder
当一个渲染对象加入到两外一个渲染对象中时,可以有两个可选参数,一个时tag,一个是order原创 2014-05-01 16:11:54 · 4901 阅读 · 0 评论 -
cocos2dx进阶学习之场景切换
背景在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下void CMMenuScene::OnStartCallBack( CCObject *pSender ){ CCDirector* pDirector = CCDirector::sharedDirector(); CCScene *pScene = CMGameScene::CreateGameScene(); pDi原创 2014-02-10 15:00:47 · 2876 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-超级玛丽02-代码结构
代码下载链接http://download.csdn.net/detail/yincheng01/6864893解压密码:c.itcast.cn前景回顾上一篇博文提到超级马里奥的游戏效果,大家是否已经搭建好环境,让马里奥运行起来呢?代码结构本文主要的目标是让大家粗略了解马里奥的代码结构,以方便后续的学习。appDelegate:应用程序代理CMGameMap:游戏地图类,负责游戏地图的加载和整个程原创 2014-01-20 20:38:25 · 5332 阅读 · 0 评论 -
cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
上篇我们完成了简单的AI编写,但是各个坦克移动时之间是可以重合的,这节课我们来完成坦克之间的碰撞检测,还是在上篇的EnemyAI中完成。1.我先现在坦克类Tank中添加两个成员变量: CC_SYNTHESIZE(CCRect, mMovedRect, MovedRect); CC_SYNTHESIZE(bool, IsBlock, Block);mMovedRect是移动后的位置,目的是保存移动原创 2013-12-26 17:36:21 · 11920 阅读 · 1 评论