Cocos2dx游戏教程(四):“见缝插针”,第一个场景的建立

从这一篇开始就正是进入游戏具体实现啦,前面都了解了核心类的基本操作,那么现在我们开始具体实现吧

一、见缝插针的玩法

简单的说,玩家有一些小球,将这些小球弹射到大球上且不能碰到大球上的小球哦,前面介绍的“口红机”就是这样的玩法,只不过我们把小球换成了口红而已。

看看广告词,说的还是很清楚的么
又是一款简单而不简略的游戏,游戏画面简略但玩法新颖。玩家手中有一定数量的针头,必须把所有的针头都插进旋转的球里头。不能够重叠也不能够撞到球上的针。赶紧来挑战下你能闯到第几关呢

我们知道了游戏玩法,那么我们开始设计自己的游戏吧!

二、建立第一个场景

前面大家已经知道了一些名词,场景,层,精灵等,下面带领大家建立第一个场景,游戏开屏界面,按版署要求,第一页需要来一个《健康游戏公告》的声明,如下所示,那么我们如何实现这个界面呢?
在这里插入图片描述
1、创建WelcomeScene类

我们仿照HelloworldScene创建一个WelcomeScene

头文件如下WelcomeScene.h

#pragma once

#include "cocos2d.h"

class WelcomeScene : public cocos2d::Layer
{
public:
	static cocos2d::Scene* createScene();

	virtual bool init();

	// a selector callback
	void menuCloseCallback(cocos2d::Ref* pSender);

	// implement the "static create()" method manually
	CREATE_FUNC(WelcomeScene);
};

类文件如下WelcomeScene.cpp

#include "WelcomeScene.h"

USING_NS_CC;

Scene* WelcomeScene::createScene()
{
	// 'scene' is an autorelease object
	auto scene = Scene::create();

	// 'layer' is an autorelease object
	auto layer = WelcomeScene::create();

	// add layer as a child to scene
	scene->addChild(layer);

	// return the scene
	return scene;
}

// on "init" you need to initialize your instance
bool WelcomeScene::init()
{
	//////////////////////////////
	// 1. super init first
	if (!Layer::init())
	{
		return false;
	}

	auto visibleSize = Director::getInstance()->getWinSize();
	Vec2 origin = Director::getInstance()->getVisibleOrigin();

	// add "HelloWorld" splash screen
	auto sprite = Sprite::create("scene/welcome.jpg");

	// position the sprite on the center of the screen
	sprite->setPosition(Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));

	// add the sprite as a child to this layer
	this->addChild(sprite, 0);

	return true;
}

我们首先制作一张公告的背景图片,然后将其加载到layer上,是不是又回到了上篇介绍的加载方式啊,测试的时候别忘了将AppDelegate.cpp中的场景跳转改成该场景啊,用到了初始化的director->runWithScene(scene);了吧

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

三、运行第一个场景

我们已经完成了第一个场景的创建,我们运行下看看是什么样子的呢

在这里插入图片描述

惊不惊喜,意不意外,是不是感觉没有那么复杂~
在这里插入图片描述
我们第一个场景运行了,那么如何到下一个场景运行呢
我们的导演类Director将再次出场,跳转场景开始啦,新场景在哪?当然在创建一个啊。第一个场景会建立了,第二个还会远么

Director::getInstance()->replaceScene(???);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章