创建工程Box2DTest,去掉背景和精灵对象等。首先在HelloWorldScene.h头文件定义一个屏幕像素与物理世界长度转换宏,并引入box2D头文件

    #define PIXEL_TO_METER 30
#include "Box2D/Box2D.h"

再声明几个函数与变量

    void createWorld();  //创建物理世界
void createWall(); //创建四周墙体
void createBall(); //创建刚体
 

b2World* world;
    b2Body* wallBody ;

float32 wallLineOffset ;

createWorld实现

void HelloWorld::createWorld()
{
b2Vec2 gravity;
gravity.Set(0.0f,-9.0f); //物理世界重力向量,这里创建一个向下的重力向量
b2BodyDef* bodydef = new b2BodyDef();
world = new b2World(gravity); //根据重力向量创建物理世界对象 world->SetAllowSleeping(true); //允许休眠
world->SetWarmStarting(true); //初始状态将受到重力影响 }

createWall实现

void HelloWorld::createWall(){
CCSize s = CCDirector::sharedDirector()->getVisibleSize(); b2BodyDef wallDef ; //刚体定义
wallDef.position.Set(0,0); //位置 wallBody = world->CreateBody(&wallDef); //创建一个刚体(四周墙体) b2EdgeShape wallShape; //形状
//下 wallLineOffset 方便调整显示位置
wallShape.Set(b2Vec2(0,0+wallLineOffset), b2Vec2(s.width/PIXEL_TO_METER,0+wallLineOffset)); //设置形状大小 wallBody->CreateFixture(&wallShape,0); //将形状连接到框架上
//上
wallShape.Set(b2Vec2(0,s.height/PIXEL_TO_METER-wallLineOffset),b2Vec2(s.width/PIXEL_TO_METER,s.height/PIXEL_TO_METER-wallLineOffset));
wallBody->CreateFixture(&wallShape,0);
//左
wallShape.Set(b2Vec2(0+wallLineOffset,s.height/PIXEL_TO_METER),b2Vec2(0+wallLineOffset,0));
wallBody->CreateFixture(&wallShape,0);
//右
wallShape.Set(b2Vec2(s.width/PIXEL_TO_METER-wallLineOffset,s.height/PIXEL_TO_METER),b2Vec2(s.width/PIXEL_TO_METER-wallLineOffset,0));
wallBody->CreateFixture(&wallShape,0);
}

createBall实现

void HelloWorld::createBall(){
CCSize s = CCDirector::sharedDirector()->getVisibleSize();
for(int i= 0; i < 5; i++)
{
b2BodyDef ballDef ;
ballDef.type = b2_dynamicBody; //设置刚体为动态物体 b2CircleShape circleShape ; //刚体碰撞使用的形状
b2FixtureDef ballFixtureDef ; circleShape.m_p.Set(1.0+i,5.0);
circleShape.m_radius= 0.5f; //刚体连接的框架设置
ballFixtureDef.shape = &circleShape;
ballFixtureDef.density = 1.0;
ballFixtureDef.restitution = 0.8; //设置重力恢复系数
ballFixtureDef.friction = 0.3f; ballDef.position.Set(s.width/2/PIXEL_TO_METER,20/PIXEL_TO_METER);
b2Body* ball = world->CreateBody(&ballDef); //根据刚体定义创建刚体
ball->CreateFixture(&ballFixtureDef); //关联框架到刚体上
}
}

最后再init方法中添加如下代码

wallLineOffset = 0.5;

    this->createWorld();
this->createWall();
this->createBall();

最后我们运行看看什么情况

呵呵,我们创建的物体世界没有显示出来,下一篇中我们把物理世界显示出来。

15--Box2D使用(一、创建物理世界)的更多相关文章

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

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

  2. cocos2dx自带物理引擎-创建物理世界

    首先在createScene()里 auto scene = Scene::createWithPhysics(); 创建带有物理的场景 然后再OnEnter里创建边界框 auto body = Ph ...

  3. 16--Box2D使用(二、显示物理世界)

    在上一篇文章中我们创建了的一个物理世界,当物理世界中的刚体一个也没有显示出来.为显示物理世界中的物体,我们需要引入GLES-Render(调试Box2D使用).这两个文件可以再 %Cocos_Home ...

  4. coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&amp;全新的3.0物理世界

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

  5. box2d中的物理世界

    box2d中的物理世界,即b2World类就是一个包含了各种物体(body,物理体,或者叫刚体),固定附着物(fixture,形状与物理体的绑定物)以及各种约束体(比如关节),并使其在当中完成各种交互 ...

  6. cocos2d-x游戏开发 跑酷(两) 物理世界

    原创.转载请注明出处:http://blog.csdn.net/dawn_moon/article/details/21240343 泰然的跑酷用的chipmunk物理引擎.我没有细致学过这个东西. ...

  7. cocos2d-x游戏开发 跑酷(四) 关联与物理世界

    原创.转载注明出处http://blog.csdn.net/dawn_moon/article/details/21451077 前面一节尽管实现了一个跑动的人物,可是他只不过一个精灵在运行一个跑动的 ...

  8. cocos2d-x快乐的做让人快乐的游戏3:cocos-2d 3.x中的物理世界

    Cocos2d-x 3.0+ 中全新的封装的物理引擎给了开发人员最大的便捷,你不用再繁琐与各种物理引擎的细节,全然的封装让开发人员能够更快更好的将物理引擎的机制加入�到自己的游戏中,简化的设计是从2. ...

  9. 在powerdesigner中创建物理数据模型

    物理数据模型(PDM)是以常用的DBMS(数据库管理系统)理论为基础,将CDM/LDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本.PDM叙述数据库的物理实现,是对真实数据库的描述 PDM ...

随机推荐

  1. 导出函数结构 EXPORT_DIRECTORY

    typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp; //输出表的创建时间 WORD ...

  2. Swift—下标-备

    看下面的示例代码是不是使用过: var studentList: String[]  = ["张三","李四","王五"] studentL ...

  3. Javascript OrderBy

    要在js 实现orderBy基本知识就是 array.sortarray.sort(function(a,b){ a 表示 row 0 b 表示 row 1 它会loop多次你可以比较 if(a &g ...

  4. java日期int和String互转

    /** * 时间unix转换 * @param timestampString * @return */ public static String TimeStampDate(String times ...

  5. 【转】三星8552 手机提示升级系统 完成后重启 开机画面一直停留在三星的LOGO 一闪一闪 怎么办

    原文网址:http://ask.zol.com.cn/q/309501.html 楼主你好,手机出现这种情况的话,可以先将电池取下来重新安装,如果不能的话,可以在关机状态下按住电源键+音量下键之后进入 ...

  6. ASP.NET MVC framework 学习

    http://www.cnblogs.com/lmfeng/archive/2013/03/28/2986123.html  MVC数据绑定方式 http://www.cnblogs.com/lmfe ...

  7. arrayPointer

    1,分别使用指针加减 int wages[2] = {100000000,20000000}; int *pw = wages or int *pw = &wages[0] 表示指针指向数组的 ...

  8. 深入理解linux网络技术内幕读书笔记(七)--组件初始化的内核基础架构

    Table of Contents 1 引导期间的内核选项 2 注册关键字 3 模块初始化代码 引导期间的内核选项 linux运行用户把内核配置选项传给引导记录,然后引导记录再把选项传给内核. 在引导 ...

  9. 数据库中的schema概念

    原文地址:http://blog.sina.com.cn/s/blog_7952e89001010jlj.html 数据库的初学者往往会对关系型数据库模式(schema).数据库(database). ...

  10. SOFTWARE_INTRODUCE_01

    &amp;amp;amp;amp;lt;br data-mce-bogus="1"&amp;amp;amp;amp;gt;&amp;amp;amp;amp; ...