〖cocos2d-x 3.3〗学习笔记之游戏实例 《跑酷》第一步— 开始界面

这个暑假去触控科技公司实习,前两个周学习cocos2d-x引擎,后就做了这个新手比较容易上手的跑酷游戏。这里分享一下自己的学习过程。

基础知识(导演、层、精灵、节点等...)-> 动作(action)-> 事件处理机制 -> tiledMap -> box2d物理引擎的认识 -> 整个游戏逻辑的串联

开始界面定义为:MainScene 有如下功能: 1.背景 2.进入游戏界面按钮 3.预先加载背景音乐文件 先总览一下class中所有的文件

QQ图片20150731175922
MainScene.h
#ifndef __BaseManager__H__
#define __BaseManager__H__

#include "cocos2d.h"
#include "Coin.h"
#include "Rock.h"

#define coinNum 4
#define coinTag 2
#define rockNum 2
#define rockTag 3

class BaseManager : public cocos2d::Node
{
public:
	CREATE_FUNC(BaseManager);
	virtual bool init();
	virtual void update(float dt);

private:
	void createCoin();
	cocos2d::Array* m_coinArr;

	void createRock();
	cocos2d::Array* m_rockArr;
};

#endif
MainScene.cpp
#include "MainScene.h"
#include "SimpleAudioEngine.h"
#include "PlayScene.h"

USING_NS_CC;
using namespace CocosDenshion;

Scene* MainScene::createScene(){
	Scene* scene = Scene::create();
	Layer* layer = MainScene::create();
	scene->addChild(layer);
	return scene;
}

bool MainScene::init(){
	if (!Layer::init()){
		return false;
	}

	//preloadMusic
	preLoadMusic();

	//create background
	createBG();
	return true;
}

void MainScene::createBG(){
	auto winSize = Director::getInstance()->getWinSize();
	auto centerPoint = ccp(winSize.width / 2, winSize.height / 2);

	//BG
	Sprite* spriteBg = Sprite::create("MainBG.png");
	spriteBg->setPosition(centerPoint);
	this->addChild(spriteBg);

	//create button
	createButton(centerPoint);
}

void MainScene::createButton(cocos2d::Point centerPoint){
	//这里就是创建一个按钮,里面有回调函数,说明按一下运行MainScene中的start(),从而转入下一个场景
	MenuItemImage* menuItem = MenuItemImage::create(
		"start_n.png",
		"start_s.png",
		CC_CALLBACK_0(MainScene::start, this));

	Menu* menu = Menu::create(menuItem, NULL);

	menu->setPosition(centerPoint);

	this->addChild(menu);
}

//这里是预加载一下音乐(背景音乐、吃金币的音乐等)
void MainScene::preLoadMusic(){
	SimpleAudioEngine* audioEngin = SimpleAudioEngine::getInstance();
	audioEngin->preloadBackgroundMusic("background.mp3");
	audioEngin->preloadEffect("jump.mp3");
	audioEngin->preloadEffect("crouch.mp3");
	audioEngin->preloadEffect("pickup_coin.mp3");
}

void MainScene::start(){
	CCLOG("game is start !");
        //转到PlayScene的场景,由于PlayScene还没写,这里会报错,所以先注释掉
	//Scene* playScene = TransitionFade::create(1, PlayScene::createScene()); 
	//Director::getInstance()->replaceScene(playScene);
}

由于分辨率那块我还一头雾水,所以在这里分辨率我调成了640*320大小的(正好是背景图片的一半,在后来的人物跑动循环那里也好设置) ,所以需要在AppDelegate.cpp 当中设置显示窗口大小:

AppDelegate.cpp中的applicationDidFinishLaunching()
bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("nafanlong");
		glview->setFrameSize(640, 320);
        director->setOpenGLView(glview);
    }

    // turn on display FPS
    director->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    // create a scene. it's an autorelease object
    auto scene = MainScene::createScene();
    
	// run
    director->runWithScene(scene);

    return true;
}

上面的auto scene = MainScene::createScene()记得改,一般默认的应该是HellowWorld

然后应该能看到开始页面了,如图:

QQ图片20150731180126

游戏需要用到的资源(不放到resourse里运行会报错):Resources

下一步:〖cocos2d-x 3.3〗学习笔记之游戏实例 《跑酷》第二步— 进入游戏

标签:   |  
时间: 2015年07月31日下午17:55  |  
作者:
loading
正在赶回来……