刚体(Body):
通过世界创建的对象,物理引擎里面所有东西都是刚体
创建方式:
定义一个b2BodyDef,b2World调用createBody的方法传入此参数

定制器(Fixture):
带有形状,密度,摩擦力等属性
创建方式:
定义一个b2FixtureDef,调用刚体的createFixture方法为刚体创建定制器(相当于附加属性),每个刚体支持添加多个Fixture;
刚体的createFixture重载了两种模式,一种是b2FixtureDef作为参数,一种是shape作为参数,效果是一样的。

形状(shape):
刚体的形状
种类:
circle(圆形),Polygon(多边形),其他等等

基本上他们的范围是这样:world,body,fixture(刚体的多个属性)

tips:b2Vec2是2dx里面类似CGPoint的东西

具体看代码

 1     //刚体
 2     b2BodyDef testBodyDef;
 3     testBodyDef.type = b2_staticBody;
 4     testBodyDef.position.Set(0,0);
 5
 6     //底部的边缘线
 7     b2EdgeShape testShape;
 8     testShape.Set(b2Vec2(0,0), b2Vec2(s.width/PTM_RATIO,0));
 9
10     b2FixtureDef testFixtueDef;
11     testFixtueDef.shape = &testShape;
12
13     b2Body* testBody = world->CreateBody(&testBodyDef);
14     testBody->CreateFixture(&testFixtueDef);
15
16     //顶部边缘线
17     testShape.Set(b2Vec2(0,s.height/PTM_RATIO), b2Vec2(s.width/PTM_RATIO,s.height/PTM_RATIO));
18     testBody->CreateFixture(&testFixtueDef);
19
20     //左边边缘线
21     testShape.Set(b2Vec2(0,0), b2Vec2(0,s.height/PTM_RATIO));
22     testBody->CreateFixture(&testFixtueDef);
23
24     //右边边缘线
25     testShape.Set(b2Vec2(s.width/PTM_RATIO,0), b2Vec2(s.width/PTM_RATIO,s.height/PTM_RATIO));
26     testBody->CreateFixture(&testFixtueDef);
27
28     //创建可运动的缸体
29     CCPoint ballPosition = CCPointMake(200, 100);
30     CCSprite* ballSprite = CCSprite::create("Ball.png");
31     ballSprite->setPosition(ballPosition);
32     this->addChild(ballSprite);
33
34     b2BodyDef moveableBodyDef;
35     moveableBodyDef.type = b2_dynamicBody;
36
37     //设置刚体位置
38     //刚体相对于世界的位置,坐标转换为box2d里面的坐标
39     moveableBodyDef.position.Set(ballPosition.x/PTM_RATIO,ballPosition.y/PTM_RATIO);
40     //把精灵放到b2BodyDef的userData里面,在update里面刷新精灵位置
41     moveableBodyDef.userData = ballSprite;
42
43     b2Body *moveableBody = world->CreateBody(&moveableBodyDef);
44
45     //创建圆形小球
46     b2CircleShape testCircleShape;
47     //刚体和形状设置坐标的时候,选一个就ok
48     testCircleShape.m_p.Set(0,0);
49     float radius = ballSprite->getContentSize().width/(2*PTM_RATIO);
50     testCircleShape.m_radius = radius;
51
52     b2FixtureDef moveableFixtureDef;
53     moveableFixtureDef.shape = &testCircleShape;
54     moveableFixtureDef.density = 1.0f;
55     moveableFixtureDef.friction = 0.3f;
56     moveableBody->CreateFixture(&moveableFixtureDef);

update方法

 1 void HelloWorld::update(float dt)
 2 {
 3     int velocityIterations = 8;
 4     int positionIterations = 1;
 5
 6     world->Step(dt, velocityIterations, positionIterations);
 7
 8     //刷新精灵位置
 9     for (b2Body* body = world->GetBodyList(); NULL!= body; body = body->GetNext())
10     {
11         if ( NULL != body->GetUserData() )
12         {
13             CCSprite* sprite = (CCSprite*)body->GetUserData();
14
15             sprite->setPosition( CCPointMake( body->GetPosition().x * PTM_RATIO, body->GetPosition().y * PTM_RATIO) );
16             sprite->setRotation( -1 * CC_RADIANS_TO_DEGREES(body->GetAngle()) );
17         }
18     }
19 }

转载于:https://www.cnblogs.com/ziyouchutuwenwu/archive/2013/06/12/3132522.html

box2d之刚体,定制器笔记相关推荐

  1. 基于easyui开发Web版Activiti流程定制器详解(五)——Draw2d详解(一)

    背景: 小弟工作已有十年有余,期间接触了不少工作流产品,个人比较喜欢的还是JBPM,因为出自名门Jboss所以备受推崇,但是现在JBPM版本已经与自己当年使用的版本(3.X)大相径庭,想升级也不太容易 ...

  2. 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)

    题外话: 这两天周末在家陪老婆和儿子没上来更新请大家见谅!上一篇介绍了调色板和画布区的页面结构,这篇讲解一下属性区的结构也是定制器最重要的一个页面. 属性区整体页面结构如图:  在这个区域可以定义工作 ...

  3. Spring boot嵌入式Servlet容器定制器

    修改Servlet配置 可以通过配置文件修改 也可以编写一个嵌入式Servlet容器定制器 EmbeddedServletContainerCustomizer 在自定义配置中,添加组件 Embedd ...

  4. 基于easyui开发Web版Activiti流程定制器详解(三)——页面结构(上)

     上一篇介绍了定制器相关的文件,这篇我们来看看整个定制器的界面部分,了解了页面结构有助于更好的理解定制器的实现,那么现在开始吧! 首先,我们来看看整体的结构: 整体结构比较简单,主要包括三个部分: ...

  5. 基于easyui开发Web版Activiti流程定制器详解(一)——目录结构

     题外话(可略过): 前一段时间(要是没记错的话应该是3个月以前)发布了一个更新版本,很多人说没有文档看着比较困难,所以打算拿点时间出来详细给大家讲解一下,由于本人平时要工作还要陪老婆和孩子而且还 ...

  6. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d的扩展(三)

    题外话: 最近在忙公司的云项目空闲时间不是很多,所以很久没来更新,今天补上一篇! 回顾: 前几篇介绍了一下设计器的界面和Draw2d基础知识,这篇讲解一下本设计器如何扩展Draw2d. 进入主题: 先 ...

  7. 【转】基于easyui开发Web版Activiti流程定制器详解(一)——目录结构

    题外话(可略过): 前一段时间(要是没记错的话应该是3个月以前)发布了一个更新版本,很多人说没有文档看着比较困难,所以打算拿点时间出来详细给大家讲解一下,由于本人平时要工作还要陪老婆和孩子而且还经营着 ...

  8. Houdini>流体,刚体导出学习过程笔记

    Houdini流体,刚体学习过程笔记 unity中流体案例项目连接: https://github.com/keijiro/HdrpVatExample 导出破碎FBX实现: 参考视频: https: ...

  9. 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记

    看<Python cookbook>的时候,第9.5部分,"定义一个属性可由用户修改的装饰器",有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代 ...

  10. 「SLAM」三维空间刚体运动名词笔记

    主要内容:旋转矩阵.变换矩阵.四元数.欧拉角 3.1 旋转矩阵 3.1.1 点.向量和坐标系 刚体:三维空间中的物体,需要用三维坐标(xyz)和位姿(物体朝向)来描述 左/右手坐标系:将大拇指.食指. ...

最新文章

  1. 使用nginx分片功能提升缓存效率,支持可拖拽式播放视频
  2. css动画执行保持forwards,css3动画如何在动作结束时保持该状态不变
  3. php怎么表示合数,什么是合数 合数的定义
  4. 51nod 平均数(二分+树状数组)
  5. JAVA 大作业——DAY 3
  6. 猎隼涉密计算机安全,[原创]如何干掉《“猎隼”涉密计算机上网监察取证系统》...
  7. 临渊羡鱼 不如退而结网
  8. 微信公众平台 登陆php,javascript - 微信公众号开发,如何使用户保持登录状态
  9. android 广告库sdk,秒针移动广告投放Android SDK集成指南
  10. 使用valgrind测试gluster fuse内存泄漏问题
  11. 亚马逊多账号防关联的解决方式
  12. imageJ二次开发之旅 – imageJ开源项目介绍
  13. CSharp + OpenCvSharp实现医学图像拼接
  14. 一篇挺有意思的文章(转自CSDN)
  15. outlook2010 html签名,Outlook2010如何设置签名
  16. AdGuard4.0新版本广告拦截程序 新增功能介绍
  17. linux 防火墙 功能点,功能点(Funciton Point FP)估算法(三) 调整因子
  18. 修改服务器连接数,服务器修改连接数
  19. APP二维码微信扫描后无法下载 微信中无法下载APP的解决方案
  20. 数据结构与算法——从零开始学习(五)树和二叉树

热门文章

  1. python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】
  2. 【转】C语言条件编译及编译预处理阶段
  3. [转]——软件开发人员如何成长
  4. linux中,使用cat、head、tail命令显示文件指定行
  5. 曲演杂坛--SQLCMD下执行命令失败但没有任何错误提示的坑
  6. Party (Standard IO)
  7. 单片机TM4C123学习(一):GPIO模块的应用
  8. 裁剪并获取固定大小的图片
  9. [CQOI2015]选数
  10. [bzoj4278][ONTAK2015]Tasowanie_后缀数组_贪心