用前面介绍的方法,创建一个cocos2d-x项目,可以看到新项目内容如下图:…
上篇我们完成了地图的信息获取和碰撞检测,这篇我们整合到程序中. 在这之前我们改造一下Tank类,使它更加模块化,共容易理解: 1.改造后的Tank类声明如下: class Tank : public CCSprite { public : Tank(); ~Tank(); static Tank* createTankWithTankType(const char* tankTypeName, TileMapInfo* tileMapInfo); void initTankWithTankTyp…
上篇文章我们有了坦克,但是没有手柄,无法控制坦克. 1.这篇我们编写虚拟手柄来控制坦克.头文件大致内容如下: #define RES_PADDLE_LEFT "paddle/left.png" #define RES_PADDLE_LEFT_PRESS "paddle/left_press.png" #define RES_PADDLE_RIGHT "paddle/right.png" #define RES_PADDLE_RIGHT_PRESS…
1.先定义坦克的一些属性 class Tank : public CCSprite { public : Tank(); ~Tank(); static Tank* createTankWithTankType(const char* tankTypeName); }; 上面定义很简单,我们暂时只用写一个函数createTankWithTankType, 2.函数功能就是从坦克类型创建坦克精灵,下面看实现: Tank* Tank::createTankWithTankType(const cha…
上节课写了关卡选择场景,那么接下来写关卡内容,先写最基本的地图的加载 我们新建一个场景类,如下所示: class CityScene : public cocos2d::CCLayer { public: CityScene(); ~CityScene(); virtual bool init(); static cocos2d::CCScene *scene(); static cocos2d::CCScene *scene(int round); CREATE_FUNC(CityScene)…
上篇文章写了Paddle类来处理精灵的点击.触摸事件,现在我们在Paddle的基础上 写一个MyPaddle类,来处理上一关.下一关.开始游戏按钮的点击事件. 1.类声明如下: class MyPaddle : public Paddle { CC_SYNTHESIZE(enum_evt, m_evttyp, evttyp); CC_SYNTHESIZE(ChoiceScene*, m_pSence, pSence); public: MyPaddle(); ~MyPaddle(); virtu…
上篇显示了控制手柄,但是还不能用来控制坦克, 这篇将会讲手柄和坦克的移动结合起来. 1.先在CityScene场景中实现场景的虚函数virtual void onEnter(); onEnter在进入场景后将会被调用,我们在onEnter中设置一个定时器, 游戏每一帧都调用次,这样我们可以在每帧中检测手柄按钮是否被按下, 然后控制坦克的移动,onEnter和update的函数实现如下: void CityScene::onEnter() { CCLayer::onEnter(); this->s…
在上篇我们加上了简单的坦克之间的碰撞检测,这篇我们继续加上子弹之间, 子弹与坦克之间的碰撞检测,对于上一篇碰撞处理不太完美的地方我们继续改进. 1.子弹之间的碰撞 //玩家子弹和敌方子弹之间的碰撞 CCObject* pObj; CCARRAY_FOREACH(mEnemyTanks, pObj) { Bullet* enemyBullet = ((Tank*)pObj)->getBullet(); if (playerBullet->getFlyState() && enem…
上篇我们完成了简单的AI编写,但是各个坦克移动时之间是可以重合的, 这节课我们来完成坦克之间的碰撞检测,还是在上篇的EnemyAI中完成. 1.我先现在坦克类Tank中添加两个成员变量: CC_SYNTHESIZE(CCRect, mMovedRect, MovedRect); CC_SYNTHESIZE(bool, IsBlock, Block); mMovedRect是移动后的位置,目的是保存移动后的位置来检测碰撞, 如果发现与其他坦克碰撞了,则不执行移动动作: IsBlock是用来标记坦克…
在上篇我们完成了子弹和地图碰撞的检测,在这篇我们将完成敌方坦克AI的编写. 具体思路是屏幕中保持有四个敌方坦克,然后坦克随机方向运动,并且子弹消失后1秒发射一次 1.我们新建一个敌方坦克的AI类来控制地方坦克AI行为: static const char* enemyTankType[] = { "normalU.png", "speedU.png", "armor1U.png" }; class EnemyAI { public: EnemyA…