15--Box2D使用(一、创建物理世界)
创建工程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使用(一、创建物理世界)的更多相关文章
- Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界
这篇我要给大家介绍两个知识点: 1. 创建游戏物理世界 2. 没了(小若:我噗) 害怕了?不用操心.这太简单了~! 笨木头花心贡献.啥?花心?不呢.是用心~ 转载请注明,原文地址:http://www ...
- cocos2dx自带物理引擎-创建物理世界
首先在createScene()里 auto scene = Scene::createWithPhysics(); 创建带有物理的场景 然后再OnEnter里创建边界框 auto body = Ph ...
- 16--Box2D使用(二、显示物理世界)
在上一篇文章中我们创建了的一个物理世界,当物理世界中的刚体一个也没有显示出来.为显示物理世界中的物体,我们需要引入GLES-Render(调试Box2D使用).这两个文件可以再 %Cocos_Home ...
- coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&全新的3.0物理世界
说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写.并做相关笔记 ...
- box2d中的物理世界
box2d中的物理世界,即b2World类就是一个包含了各种物体(body,物理体,或者叫刚体),固定附着物(fixture,形状与物理体的绑定物)以及各种约束体(比如关节),并使其在当中完成各种交互 ...
- cocos2d-x游戏开发 跑酷(两) 物理世界
原创.转载请注明出处:http://blog.csdn.net/dawn_moon/article/details/21240343 泰然的跑酷用的chipmunk物理引擎.我没有细致学过这个东西. ...
- cocos2d-x游戏开发 跑酷(四) 关联与物理世界
原创.转载注明出处http://blog.csdn.net/dawn_moon/article/details/21451077 前面一节尽管实现了一个跑动的人物,可是他只不过一个精灵在运行一个跑动的 ...
- cocos2d-x快乐的做让人快乐的游戏3:cocos-2d 3.x中的物理世界
Cocos2d-x 3.0+ 中全新的封装的物理引擎给了开发人员最大的便捷,你不用再繁琐与各种物理引擎的细节,全然的封装让开发人员能够更快更好的将物理引擎的机制加入�到自己的游戏中,简化的设计是从2. ...
- 在powerdesigner中创建物理数据模型
物理数据模型(PDM)是以常用的DBMS(数据库管理系统)理论为基础,将CDM/LDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本.PDM叙述数据库的物理实现,是对真实数据库的描述 PDM ...
随机推荐
- 转:perror和strerror的区别
概述: perror和strerror都是C语言提供的库函数,用于获取与erno相关的错误信息,区别不大,用法也简单.最大的区别在于perror向stderr输出结果,而 strerror向stdou ...
- 安卓u8800刷机
一篇非常好的帖子:http://bbs.anzhi.com/thread-5113728-1-1.html 虽然不是什么大神,不过在两个QQ群里和这里解答过N多刷机和ROOT中遇到的问题了...而且伸 ...
- BZOJ3392: [Usaco2005 Feb]Part Acquisition 交易
3392: [Usaco2005 Feb]Part Acquisition 交易 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 26 Solved: ...
- hdu 2256 Problem of Precision
点击打开hdu 2256 思路: 矩阵快速幂 分析: 1 题目要求的是(sqrt(2)+sqrt(3))^2n %1024向下取整的值 3 这里很多人会直接认为结果等于(an+bn*sqrt(6))% ...
- HTML5迷你游戏作验证码
验证码最常见的是各种变形的字符,因为识别程序进化得越来越聪明,验证码也变得越来越难以识别,给用户造成了很多的麻烦和反感. 已经有很多人尝试过各种改进的验证码,比如动画的验证码,做题目的验证码,要回答问 ...
- S-Nim
http://acm.hdu.edu.cn/showproblem.php?pid=1536 SG经典题,不多说 // File Name: hdu1536.cpp // Author: bo_jwo ...
- spring 学习2
package com.asm; //...省略导入的相关类 public class MessageController implements Controller { public ModelAn ...
- 关于javax.crypto.BadPaddingException: Blocktype错误的几种解决方法
此文章转载自:http://www.myexception.cn/mobile/1259076.html 关于javax.crypto.BadPaddingException: Blocktype异常 ...
- 实现Android 动态载入APK(Fragment or Activity实现)
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38565345 近期由于项目太大了.导致编译通只是(Android对一个应用中的方法个数貌似有 ...
- ini文件解析c库(iniparser)
一.交叉编译ini解析库 1.官方网站http://ndevilla.free.fr/iniparser 下载iniparser-3.1.tar.gz 2.解压 tar -zxvf iniparser ...