cocos2d-x格斗游戏教程(一)

本教程详细介绍了如何使用Cocos2D-x 2.0.4制作一个横版格斗过关游戏。从创建Xcode工程开始,逐步讲解添加游戏场景、角色动画、地图显示、状态机实现以及英雄角色的初始化和出拳动作。通过实践,读者将学会如何跟踪动画状态、处理碰撞和简单敌人AI。
摘要由CSDN通过智能技术生成

本文实践自 Allen Tan 的文章《How To Make A Side-Scrolling Beat ‘Em Up Game Like Scott Pilgrim with Cocos2D – Part 1》,文中使用Cocos2D,我在这里使用Cocos2D-x 2.0.4进行学习和移植。在这篇文章,将会学习到如何制作一个简单的横版格斗过关游戏。在这当中,学习如何跟踪动画状态、碰撞盒、添加方向键、添加简单敌人AI和更多其它的。

步骤如下:
1.新建Xcode工程,工程名为"PompaDroid",去除"Box2D"选项,勾选"Simple Audio Engine in Cocos Denshion"选项;
2.添加游戏场景类GameScene,派生自CCScene类。添加GameLayer类和HudLayer类,派生自CCLayer类。删除HelloWorldScene.hHelloWorldScene.cpp文件。
3.HudLayer类增加一个方法:

1
 
CREATE_FUNC(HudLayer);

GameLayer类增加一个方法:

1
 
CREATE_FUNC(GameLayer);

4.文件GameScene.h代码如下:

#include "cocos2d.h"
#include "GameLayer.h"
#include "HudLayer.h"
USING_NS_CC;
class GameScene:public  CCScene
{
    
public:
    //构造函数
    GameScene();
    //析构函数
    ~GameScene();
    
    virtual bool init();
    CREATE_FUNC(GameScene);
    
    //利用cocos2d-x中的宏定义实现Get和Set方法
    CC_SYNTHESIZE(GameLayer*, _gameLayer, GameLayer);
    CC_SYNTHESIZE(HudLayer*, _hudLayer, HudLayer);
};

文件GameScene.cpp代码如下:

GameScene::GameScene(void)
{
    //在构造函数中将指针置空防止野指针
    _gameLayer = NULL;
    _hudLayer = NULL;
}

GameScene::~GameScene(void)
{
}

bool GameScene::init()
{
    bool bRet = false;
    do
    {
        CC_BREAK_IF(!CCScene::init());
        //初始化游戏层
        _gameLayer = GameLayer::create();
        //将该层加在0的位置数越小越在下面
        this->addChild(_gameLayer,0);
        //初始化游戏的虚拟手柄层
        _hudLayer = HudLayer::create();
        //将该层加在1的位置1比0大,所以手柄层在游戏层的上面
        this->addChild(_hudLayer,1);
        
        bRet = true;
    } while (0);
    
    return bRet;
}

5.修改AppDelegate.cpp文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
 
//#include "HelloWorldScene.h"
#include "GameScene.h"

bool AppDelegate::applicationDidFinishLaunching()
{
//...

// create a scene. it's an autorelease object
//CCScene *pScene = HelloWorld::scene();
   CCScene *pScene = GameScene::create();

//...
}

6.编译运行,此时只是空空的界面。
7.下载本游戏所需资源,将资源放置"Resources"目录下;

8.用Tiled工具打开pd_tilemap.tmx,就可以看到游戏的整个地图:

地图上有两个图层:Wall和Floor,即墙和地板。去掉每个图层前的打钩,可以查看层的组成。你会发现下数第四行是由两个图层一起组成的。每个tile都是32x32大小。可行走的地板tile位于下数三行。
9.打开GameLayer.h文件,添加如下代码&#

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值