主角眼熟吗?没错,上次跑酷游戏中的“30”来Jump了,有三种道具。主角光环,竹蜻蜓。翅膀; 有两种怪物,螃蟹和鸟; 有5种板子。点击屏幕,30会把它的嘴巴3给发射出去。能够攻击怪物。
上次的跑酷參考《cocos2d 简单高仿天天跑酷游戏》 。苹果已经审核通过...但做的很差,兴许有时间再更新。后面考虑会出很多其它的该主角游戏。
事实上蛮讨厌"高仿"这两个字的,争取下一款游戏有很多其它原创部分。
有一个Camera,它的位置跟着主角来移动就能够了。
就这么简单。
float minPositionY = 0;
void update(float dt){
	//follow the hero
	float nextPositionY = VISIBLE_HEIGHT / 2 - hero->getPositionY();
	if(nextPositionY < minPositionY){
		minPositionY = nextPositionY;
		this->setPositionY(minPositionY);
	}
}首先是板子连续生成的逻辑,不可能一次生成几十个板子。反正屏幕之上和屏幕之下用户都是看不到的,也就是说10几个板子。整个游戏就够用了。到后面。10个都不用。
正常的update是一秒中运行60次。我们须要整一个慢一点的定时器,这样不会太影响性能。
schedule(schedule_selector(GameObjectsLayer::createAndRemoveObjects), 0.064);。专门在里面创建板和移除不须要的板子。deque<JumpBoard*> _boardObjects;
void generateSomeBoards(const int& lastPositionX,int startPosition,const int& count);
void createAndRemoveObjects(float dt){
    if(_pause == true){
        return;
    }
     if(_boardObjects.size() <= 12){//generate some boards if we only have few boards
        JumpBoard *lastBoard = _boardObjects.back();
        generateSomeBoards(lastBoard->getPositionX(), lastBoard->getPositionY() + getGeneratorHigh(),5);
    }
     //remove unused boards
     JumpBoard* firstBoard = _boardObjects.front();
    if(hero->getPositionY() - firstBoard->getPositionY() > 600){
        firstBoard->removeFromParent();
        _boardObjects.pop_front();
    }
}这里游戏的玩法就是怎样控制生成板子。我必须承认这块做的还不好。
typedef enum{
    kNormalBoard,      //0
    kCloudBoard,       //1
    kMoveBoard,        //2
    kMoveLttleBoard,   //3
    kSpringBoard       //4
}JumpBoardType;
int level1[] = {0,0,0,0,0,0,0,0,0,0,1,1,1};
int level2[] = {0,0,0,0,0,0,0,0,0,0,1,1,2,3,4};会依据当前的hero高度来选择不同的数组。当index移到最后一个时候,就归0。再次洗牌。
int getBoardTypeDueToFloorNum(){
    int floorCount = getFloorCount();
    int result = 0;
    if(floorCount <= 2){
        if(_levelIndex >= _level1.size()){
            _levelIndex = 0;
            random_shuffle(_level1.begin(), _level1.end());
        }
        result = _level1[_levelIndex];
        ++_levelIndex;
        return result;
        
    }else if(floorCount > 2  && floorCount <= 10){
        if(_levelIndex >= _level2.size()){
            _levelIndex = 0;
            random_shuffle(_level2.begin(), _level2.end());
        }
        result = _level2[_levelIndex];
        ++_levelIndex;
        return result;
    }else{
        //无限模式
    }
}
//typedef enum{
//    kHelicopterItem,   //0
//    kFlyItem,          //1
//    kShortItem,        //2
//    kLongItem,         //3
//    kDefenceBall       //4
//}EatItemType;
int allEatItemType[] = {4,4,4,0,0,1};Doodle jump这块做的变态的好,一般怪物出现之前会有杀死怪物或者躲避怪物的道具出现。
仅仅用到了左边红色的部分。
这里就不再赘述。
有真正游戏的感觉。
原文:http://www.cnblogs.com/lcchuguo/p/5271725.html