位置: 编程技术 - 正文
推荐整理分享Bullet(Cocos2dx)之封装PhysicsWorld3D,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
根据bullet3 HelloWorld程序去封装一个PhysicsWorld3D,
首先应该去创建一个物理世界,而对于一个物理世界,默认都有重力,提供一个创建
世界的静态方法(重力默认为(0, -, 0))
负责创建世界,同时对世界初始化
这里创建一个btDiscreteDynamicsWorld
直接复制bullet3 HelloWorld对世界的初始化,并修改
_collisionConfiguration,_dispatcher, _solver, _overlappingPairCache, _drawer均为成员变量,
具体使用参照Bullet的文档
销毁一个物理世界
创建一些简单的body
由于每种body都有自己的材质信息
btRigidBodyConstructionInfo是构造一个刚体信息的结构体,
我们只需关心几个参数,
friction; // 摩擦系数
rollingFriction; // 滚动摩擦系数
restitution; // 恢复系数(弹性系数)
mass; // 质量
自己去实现一个简单的材质结构体
并提供一个默认的材质信息
实现构造3个基本物体,如下声明
对于一个无限的平面,需要一个法向量决定Plane的朝向,同时position决定plane的位置,当然还有材质,但是mass必须为0
对于一个球体(Sphere)半径,位置,材质
对于一个盒子(Box)尺寸, 位置,材质
构造一个刚体包含一些共同的步骤collisionShape, position, material
由于Plane,Sphere,Box collisionShape类型不同,所以单独实现,
其他的公共步骤可以抽离出来
仿照HelloWorld构造body的方法
不要忘了物理世界的更新
完整源码
浅谈cocos2dx手游开发CPU发热严重之见 猜测它有可能是在主循环里使用了Sleep(0),一搜,果然定位到具体代码,它位于cocos2dxplatformwinCCApplication.cpp,大致长像如下:1while(1){2if(有消息){3if(时
Cocos2dx的内存优化总结 1加载图片过程优化问题:以cocos2dx2.x为例,创建精灵CCSprite的过程中会创建一个CCImage,所以短时间会占用2倍内存,所以应避免连续加载(同一帧内,加
cocos2dx 3.3 tilemap 缩放滑动并且准确点击对象 之前已经有一篇更基础的tilemap笔记了,这两天用了下3.3的tilemap发现以前有些东西又套用不了。所以又写了一篇札记,顿时感觉自己萌萌哒。完全没有玩
标签: Bullet(Cocos2dx)之封装PhysicsWorld3D
本文链接地址:https://www.jiuchutong.com/biancheng/372623.html 转载请保留说明!友情链接: 武汉网站建设