双人跑酷小游戏游戏里bunes是什么意思

当前位置:
CopyRight2004年-年
游迅网 All Rights Reserved
备案编号:沪ICP备号-9正在播放:第三周_第14天_第4节课_跑酷游戏开发_第一关卡H_道具开发B
下载学院APP缓存视频离线看
购买本课程后即可享受以下服务:
24小时讲师答疑
所有课时永久观看
购买课程返学分
价格:285金币
购买本课程后,就可以记笔记了~~
开始记笔记……
记录时间点
我的笔记同学的笔记
购买本课程后,就可以提问题了~~
向老师提问……
记录时间点
我的问题同学的问题coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&全新的3.0物理世界 - 其他 - 红黑联盟
coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&全新的3.0物理世界
从这里开始,就和之前前辈的有很多不同啦。
在MainScene中,开始按钮中,我们就要通过回调函数,进入到我们的游戏场景啦。
那么在游戏场景中我们定义为:PlayScene ,而且是一个带物理世界的场景,cocos2d-x 3.0中要创建物理Scene是很简单的,因为它都帮我们封装好了。
那么这一步,我们在PlayScene 中主要完成以下功能:
1.物理世界创建
2.创建一个地面的物理刚体
相关知识个人见解:
所谓的创建物理世界,个人觉得是一个抽象的东东,作为新手,开始并不能理解,开始你可以就理解为一个游戏Scene,只是有它自己的特性,具体是什么特性先不管
而所谓的刚体,你可以先认为就是一个实体,能看得见,摸得着的东东,并且不会被力所改变形状。我们知道,一个个的游戏人物、物体都用精灵来表现出来,精灵就是一个看得见,摸不到的东西。如:有两个精灵,它们面对面走呀走,那么就会重叠起来,后面放置后绘制,也就是你会看到后面的精灵挡住前面的精灵。那么跑酷中,主角和金币也都是精灵,当主角所在的区域遇到金币,那么就会把金币&吃掉&,两个精灵重合在一起,我们就需要做出一系列的判断:&碰撞检测&,来看看主角是不是吃到金币啦。那么就可以用到物理的刚体,主角和金币用精灵展示,但是都带着一个刚体,当它们刚碰到一起,我们就可以运用物理碰撞检测。
由于在物理世界中,所有物体都是有重力的,将来主角会带有一个带刚体,那么为了不让主角掉出屏幕外,就需要创建一个地面的刚体,主角就能放置在地面刚体上。那么你可能要问:地板也是刚体,那么地板不也会掉下去吗?那么cocos中有两种不同的刚体,一种就是受重力影响的,另外一种就是静态刚体,你可以把它放在任何位置,那么这里地板就是用的静态刚体
直接看代码:
PlayScene .h:
#ifndef __PlayScene__H__
#define __PlayScene__H__
#include cocos2d.h
class PlayScene : public cocos2d::Layer{
virtual bool init();
static cocos2d::Scene* createScene();
CREATE_FUNC(PlayScene);
//这里两行的作用是:为后面的layer-&setPhysicsWorld(scene-&getPhysicsWorld());
cocos2d::PhysicsWorld* m_
void setPhysicsWorld(cocos2d::PhysicsWorld* world){ m_world =};
//初始化一个地板的物理刚体
void initPhysicWorld();
cocos2d::PhysicsWorld* m_
void setPhysicsWorld(cocos2d::PhysicsWorld* world){ m_world =};
这两句代码在后面的过程,看不到它的使用,但是是必要的
PlayScene .cpp:
#include PlayScene.h
#include SimpleAudioEngine.h
#define ground_hight 59
USING_NS_CC;
using namespace CocosD
Scene* PlayScene::createScene(){
//创建带有物理的Scene
auto scene = Scene::createWithPhysics();
//开启调试,将物理世界描绘出来,使得其可见
scene-&getPhysicsWorld()-&setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
注意这里要用 auto ,不然setPhysicsWorld不可以用
auto layer = PlayScene::create();
layer-&setPhysicsWorld(scene-&getPhysicsWorld());
scene-&addChild(layer);
bool PlayScene::init(){
if(!Layer::init()){
SimpleAudioEngine::getInstance()-&playBackgroundMusic(background.mp3,true);
initPhysicWorld();//这里创建地面刚体
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);
那么我们就可以通过开始按钮切换到我们的游戏场景啦。
这里的TransitionFade::create 只是一个切换场景的方式,你可以转到定义,还有其他的很多方式,比如可以让你的游戏场景像百叶窗那样出现
运行游戏,按下按钮之后的游戏场景如下:
图中的那条红色的细线就是我们的地面静态刚体,由于开启的调式,所有我们这里能看到
OK,下面就让我们的主人公,进入游戏场景并且跑起来逃出动物园
快,帮助他们逃亡吧!
(责任编辑:浅岸)(人气:)上一篇:
(来源:安卓网)下一篇:
热门产品推荐
分享到其他平台:
推荐理由:《神魔大陆》手游版是完美世界2013年,面向移动平台推出的西方魔幻题材为背景的3D MMORPG手机游戏。游戏基于自主研发的跨平
推荐理由:城市岛屿:机场2 City Island: Airport 2是一款模拟经营游戏,是《城市岛屿:机场》的续作。建造并管理属于你自已的机场城市,
推荐理由:微观世界大冒险( Microtrip)是一款风格相当精致可爱的物理游戏,在游戏中玩家需要扮演一只小细菌,到某种奇怪的生物体内将
推荐理由: 《虫虫英雄2 Bug Heroes 2》是Foursaken Media旗下人气作品《虫虫英雄》的正统续作,融合了动作、策略、塔防、射击、角色扮演和
推荐理由:《机械迷城 直装版 Machinarium》是一款由捷克独立开发小组Amanita Design设计制作的最新作品冒险解谜游戏,以独特的水墨风格为

我要回帖

更多关于 地铁跑酷游戏下载 的文章

 

随机推荐