制作飞镖忍者(1) Cocos2d-x 3.0alpha0

来源:未知 责任编辑:责任编辑 发表时间:2013-12-06 08:43 点击:
本文实践自 Ray Wenderlich 的文章《How To Make A Simple iPhone Game with Cocos2D 2.X Tutorial》,文中使用Cocos2D,我在这里使用Cocos2D-x3.0alpha0进行学习和移植,前者是用Object-C所写,所以移植到Cocos2D-x会有些差异,比如某些函数、某些功能不能跟原文一样直接实现,需另转换方法实现。之前已经对Cocos2D-x的安装以及简单使用进行了介绍,这里不再介绍,直接进入主题。

步骤如下:使用脚本创建工程

./create-multi-platform-projects.py -p Ninja -k com.HuLuo.Ninja -l cpp

2.编译运行,可以看到如下图所示:
\
3.下载本游戏所需的资源,将资源放置"Resources"目录下;
\
4.游戏需要一个白色的背景,最简单的方法是使用CCLayerColor,将HelloWorldScene.h文件"HelloWorld"类改为如下:

class HelloWorld : public cocos2d::LayerColor
之后添加如下代码:

    Sprite* _player;
    Sprite* _monster;
    
    void addMonster();
    
    void spriteMoveFinished(Node* sender);
    
    void gameLogic(float dt);
首先添加玩家,让玩家位于左边屏幕中间,将HelloWorldScene.cpp文件的init函数,改为如下:

bool HelloWorld::init()
{
    bool bRet = false;
    do {
        CC_BREAK_IF(!LayerColor::initWithColor(Color4B(255, 255, 255, 255)));
        Size winSize = Director::getInstance()->getWinSize();
        
        _player = Sprite::create("Player.png");
        _player->setPosition(Point(_player->getContentSize().width / 2, winSize.height / 2));
        _player->setScale(2);
        this->addChild(_player);
        
        this->schedule(schedule_selector(HelloWorld::gameLogic), 1.0);
        
        
        bRet = true;
    } while (0);
    return bRet;
    
}

void HelloWorld::gameLogic(float dt)
{
    
}
5.编译运行,可以看到玩家精灵在白色背景上,如下图所示:

\


6.接下来添加怪物,并且让怪物可以移动,我们在屏幕右边创建怪物,建立动作让它们向左移动,增加addMonster方法,代码如下:

void HelloWorld::addMonster()
{
    _monster = Sprite::create("monster.png");
    _monster->setScale(2);
    
    Size winSize = Director::getInstance()->getWinSize();
    
    int minY = _monster->getContentSize().height / 2;
    int maxY = winSize.height - _monster->getContentSize().height / 2;
    
    int rangeY = maxY - minY;
    
    int actualY = (rand() % rangeY) + minY;
    
    _monster->setPosition(Point(winSize.width + _monster->getContentSize().width / 2, actualY));
    
    this->addChild(_monster);
    
    int minDuration = 2;
    int maxDuration = 4;
    int rangeDuration = maxDuration - minDuration;
    int actualDuration = (rand() % rangeDuration) + minDuration;
    
    MoveTo* actionMove = MoveTo::create(actualDuration, Point(-_monster->getContentSize().width / 2, actualY));
    CallFuncN* actionMoveDone = CallFuncN::create(std::bind(&HelloWorld::spriteMoveFinished, this,_monster));
    
    _monster->runAction(Sequence::create(actionMove,actionMoveDone, NULL));
    
    
}

	
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1