说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程。用cocos2d-x
2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写。并做相关笔记

从这里開始,就和之前前辈的有非常多不同啦。

在MainScene中,開始button中,我们就要通过回调函数,进入到我们的游戏场景啦。

那么在游戏场景中我们定义为:PlayScene ,并且是一个带物理世界的场景,cocos2d-x 3.0中要创建物理Scene是非常easy的,由于它都帮我们封装好了。

那么这一步。我们在PlayScene 中主要完毕下面功能:

1.物理世界创建

2.创建一个地面的物理刚体

相关知识个人见解:

所谓的创建物理世界,个人认为是一个抽象的东东,作为新手,開始并不能理解,開始你能够就理解为一个游戏Scene,仅仅是有它自己的特性。详细是什么特性先无论

而所谓的刚体。你能够先觉得就是一个实体,能看得见。摸得着的东东,而且不会被力所改变形状。我们知道。一个个的游戏人物、物体都用精灵来表现出来。精灵就是一个看得见,摸不到的东西。如:有两个精灵,它们面对面走呀走,那么就会重叠起来。后面放置后绘制,也就是你会看到后面的精灵挡住前面的精灵。那么跑酷中,主角和金币也都是精灵,当主角所在的区域遇到金币。那么就会把金币“吃掉”,两个精灵重合在一起,我们就须要做出一系列的推断:“碰撞检測”,来看看主角是不是吃到金币啦。那么就能够用到物理的刚体,主角和金币用精灵展示,可是都带着一个刚体,当它们刚碰到一起,我们就能够运用物理碰撞检測

因为在物理世界中,全部物体都是有重力的。将来主角会带有一个带刚体。那么为了不让主角掉出屏幕外,就须要创建一个地面的刚体,主角就能放置在地面刚体上。

那么你可能要问:地板也是刚体,那么地板不也会掉下去吗?那么cocos中有两种不同的刚体。一种就是受重力影响的。第二种就是静态刚体,你能够把它放在不论什么位置,那么这里地板就是用的静态刚体

直接看代码:

PlayScene .h:

#ifndef __PlayScene__H__
#define __PlayScene__H__ #include "cocos2d.h" class PlayScene : public cocos2d::Layer{
public:
virtual bool init();
static cocos2d::Scene* createScene();
CREATE_FUNC(PlayScene); //这里两行的作用是:为后面的layer->setPhysicsWorld(scene->getPhysicsWorld());
cocos2d::PhysicsWorld* m_world;
void setPhysicsWorld(cocos2d::PhysicsWorld* world){ m_world = world;}; private: //初始化一个地板的物理刚体
void initPhysicWorld();
}; #endif

代码中的

cocos2d::PhysicsWorld* m_world;
void setPhysicsWorld(cocos2d::PhysicsWorld* world){ m_world = world;};

这两句代码在后面的过程。看不到它的使用。可是是必要的

PlayScene .cpp:

#include "PlayScene.h"
#include "SimpleAudioEngine.h" #define ground_hight 59 USING_NS_CC;
using namespace CocosDenshion; Scene* PlayScene::createScene(){ //创建带有物理的Scene
auto scene = Scene::createWithPhysics(); //开启调试,将物理世界描绘出来,使得其可见
scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); //Layer 注意这里要用 auto ,不然setPhysicsWorld不能够用
auto layer = PlayScene::create(); layer->setPhysicsWorld(scene->getPhysicsWorld()); scene->addChild(layer); return scene;
} bool PlayScene::init(){
if(!Layer::init()){
return false;
} SimpleAudioEngine::getInstance()->playBackgroundMusic("background.mp3",true); initPhysicWorld();//这里创建地面刚体 return true;
} void PlayScene::initPhysicWorld(){
auto visibleSize = Director::getInstance()->getVisibleSize();
auto origin = Director::getInstance()->getVisibleOrigin(); //创建一个地面边界 的刚体
auto boundBody = PhysicsBody::createEdgeSegment(origin,
ccp(visibleSize.width,0),
PHYSICSBODY_MATERIAL_DEFAULT,1); //用一个Node 关联物理刚体
auto boundNode = Node::create(); boundNode->setPhysicsBody(boundBody); boundNode->setPosition(0,ground_hight); this->addChild(boundNode);
}

在createScene函数中,类似普通场景的创建:

auto scene = Scene::create();

我们须要创建特殊的 物理场景就这么做:

//创建带有物理的Scene
auto scene = Scene::createWithPhysics();

然后我们须要把物理世界的刚体们都画出来让我们看到,就要开启 调试

//开启调试,将物理世界描绘出来,使得其可见
scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);

然后相同要创建Play 层,而且为这个层绑定物理世界

而在initPhysicWorld函数中。我们为这个物理世界初始化,只只为物理世界弄一个地面刚体,那么由于刚体须要物体来展示。我们就用一个node 来绑定刚体。那么这里另一个宏定义 ground_hight  59  由于后面非常多东西的放置都是要基于这个地面的高度的,查看了一下资源中的地的图片。它的高度像素是59 ,所以。。。。

然后我们就能够開始游戏界面的初步显示啦

在MainScene.cpp的回调函数 start中,

void MainScene::start(){
CCLOG("game is start !");
Scene* playScene = TransitionFade::create(1,PlayScene::createScene());
Director::getInstance()->replaceScene(playScene);
}

那么我们就能够通过開始button切换到我们的游戏场景啦。

这里的TransitionFade::create 仅仅是一个切换场景的方式,你能够转到定义,还有其它的非常多方式,比方能够让你的游戏场景像百叶窗那样出现

执行游戏。按下button之后的游戏场景例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWllZMTczNTMzODMy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图中的那条红色的细线就是我们的地面静态刚体。因为开启的调式。全部我们这里能看到

OK,以下就让我们的主人公,进入游戏场景而且跑起来

这里贴出一个关于3.0物理引擎的新手教程:

新物理引擎

个人愚昧观点,欢迎指正与讨论

coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&全新的3.0物理世界的更多相关文章

  1. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第0步---知识点总结&效果预览&设计思路

    /* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏.这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码:第二能够说 ...

  2. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 完结篇--源代码放送

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  3. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第一步--- 开始界面

    说明:这里是平局:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  4. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  5. cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第八部---怪物出场

    /* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码.第二能够说 ...

  6. Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界

    这篇我要给大家介绍两个知识点: 1. 创建游戏物理世界 2. 没了(小若:我噗) 害怕了?不用操心.这太简单了~! 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www ...

  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第三步---主角开跑&amp;同一时候带着刚体

    说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  8. cocos2d-x 3.0游戏实例学习笔记 《跑酷》移植到android手机

    说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  9. cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&amp;主角加入动作

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

随机推荐

  1. python算法-栈

    定义: 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...

  2. .netCore例子

    .netCore例子 文章:https://github.com/dotnet-architecture/eShopOnContainers

  3. bzoj 5055: 膜法师 树状数组+离散

    先枚举每一个数,看它前面有几个比它小,算一下和为sum1,后面有几个比它大,算一下和为sum2,对答案的贡献为A[i]*sum1*sum2. 离散化后,树状数组就可以了. 就是倒着一边,顺着一边,统计 ...

  4. NVMe与SCM结合将赋予存储介质的能力

    转自:SCM是什么鬼,NVMe与其结合将赋予存储介质哪些能力? 全SSD闪存阵列在企业级存储得到广泛应用,相比传统机械硬盘,它的延迟.性能和可靠性都有了显著提高.许多早期开发商抓住其闪存技术优势的机遇 ...

  5. 虚拟机vmnet0、vmnet1和vmnet8的区别 虚拟网卡概述

    vmnet0,实际上就是一个虚拟的网桥 vmnet0,实际上就是一个虚拟的网桥,这个网桥有很若干个端口,一个端口用于连接你的Host,一个端口用于连接你的虚拟机,他们的位置是对等的,谁也不是谁的网关. ...

  6. UVa10234 Race

    递推,设有i个人排在第一名,剩下的人排在后面,方案有f[i]种,则f[i]=sum(c[n][i]*f[n-i]) 1<=i<=n /*by SilverN*/ #include<a ...

  7. 棋盘制作 BZOJ 1057

    棋盘制作 [问题描述] 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴 ...

  8. Lumia 1020 诞生:诺基亚拍照技术的一次狂欢

    它在手机发展史上留下一长串坚实的脚印,拥趸遍及世界.它从巅峰滑落,但从未放弃向过去致敬的机会. 2002 年,作为世界上第一款内置摄像头拍照手机,诺基亚 7650 的横空出世将手机行业硬生生推上一个新 ...

  9. Yii 安装学习

    (1)打开yii官方网站: http://www.yiichina.com (2)点击下载,跳转到下载页面: (3)找到从归档文件安装,新手学习,使用[ Yii2的基本应用程序模板]: (4)下载解压 ...

  10. FastMM使用详解

    FastMM使用详解 一.引言      FastMM 是适用于delphi的第三方内存管理器,在国外已经是大名鼎鼎,在国内也有许多人在使用或者希望使用,就连 Borland 也在delphi2007 ...