cocos2d-x box2d 简单物体(一)
来源:互联网 发布:项目经验 知乎 编辑:程序博客网 时间:2024/05/27 20:26
个人原创,欢迎转载,注明出处:http://blog.csdn.net/dawn_moon/article/details/20470991
box2d的物理世界有一个world来维护,可以创建简单的物体,圆形,矩形,三角形,多边形。多边形只支持凸多边形,最多8个顶点。
box2d的物体有三种:动态物体(dynamic),静态物体(static),运动学物体(kinematic)。
动态物体可以受力,可以碰撞,可以移动。
静态物体不可以移动,不受力,不能移动,可以参与碰撞。
运动学物体类似静态物体,但是它可以被移动。
创建一个物体有三个步骤,
1.一个物体的body定义b2BodyDef,这个结构体描述了物体的类型,位置坐标,角度,速度等。
2.用b2BodyDef创建一个body。
3.有了body,你还看不到这个物体,还需要定义形状。这个形状又是通过一个叫夹具的东西(fixtures)来加到物体上的。
// body def b2BodyDef bDef; bDef.type = b2_dynamicBody; bDef.position = b2Vec2(visibleSize.width / 2 / RATIO + 5, visibleSize.height / 2 / RATIO); // body b2Body * birdBody = world->CreateBody(&bDef); // shape b2PolygonShape birdShap; CCSize size = bird->getContentSize(); birdShap.SetAsBox((65) / 2 / RATIO, (65) / 2 / RATIO, b2Vec2(45 / 2 / RATIO, 27 / 2 / RATIO), 0); // fixtures b2FixtureDef birdFixtureDef; birdFixtureDef.shape = &birdShap; // fix to body birdBody->CreateFixture(&birdFixtureDef);
将精灵绑定到物体上:
一个精灵绑定到物体上,是在物体的body定义b2BodyDef里面设置的,
role = CCSprite::create("poop_1.png"); bodyDef.userData = role;
但是如果只这样是不够的,你会发现精灵和物体会分开,不会一起移动。这还需要根据物体的位置改变精灵的坐标,具体可以看上篇代码的update函数。
官方有一个B2Sprite的类,把精灵和body绑在一起了,后面我把这个类在补充一下,用起来就方便一点了,不用去定义一大堆的东西。
0 0
- cocos2d-x box2d 简单物体(一)
- cocos2d-x box2d 简单物体(二)
- cocos2d-x Box2D 简单例子
- 用Cocos2d-x-3.0及Box2d预测物体弹道轨迹
- [cocos2d-x]box2d的简单应用
- Cocos2d-x Box2D debugDraw
- cocos2d-x box2d 示例
- cocos2d-x box2d debugdraw
- cocos2d-x box2d 入门
- Cocos2d-x Box2D debugDraw
- COCOS2D-X ANDROID BOX2D
- cocos2d-x 3.2 |Box2d 物理引擎 old 一
- 基于cocos2d-x-3.2学习Box2D(一)
- [ IOS-Cocos2d-x (Box2d)游戏开发之一] -简单创建一个Box2D
- cocos2d-x 物理引擎box2d
- cocos2d-x 物理引擎box2d
- cocos2d-x Box2d 入门例子
- 【cocos2d-x官方文档】Box2D
- linux下的高效代码搜索工具-ack
- 前端开发技术的发展
- 使用SerialPort类设计串口通讯程序
- MySQL用while实现for循环嵌套(插入学生成绩信息功能)
- Win7环境使用VC2008编写DLL实现键盘钩子
- cocos2d-x box2d 简单物体(一)
- 自己动手JQuery插件开发
- Klog开发笔记——分页插件 Kaminari 介绍
- gcc的__attribute__编译属性
- windows下编译ffmpeg源代码(测试过,成功了)
- Hibernate缓存何时使用和如何使用
- 个人全职是否能够兼顾独立B2C商城和淘宝店铺?
- QML ListView翻译
- 编程之美:让CPU占用率曲线听你指挥