位置: 编程技术 - 正文

Bullet(Cocos2dx)之封装PhysicsWorld3D

编辑:rootadmin
Bullet3之封装PhysicsWorld3D

推荐整理分享Bullet(Cocos2dx)之封装PhysicsWorld3D,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

根据bullet3 HelloWorld程序去封装一个PhysicsWorld3D,

首先应该去创建一个物理世界,而对于一个物理世界,默认都有重力,提供一个创建

世界的静态方法(重力默认为(0, -, 0))

负责创建世界,同时对世界初始化

这里创建一个btDiscreteDynamicsWorld

直接复制bullet3 HelloWorld对世界的初始化,并修改

_collisionConfiguration,_dispatcher, _solver, _overlappingPairCache, _drawer均为成员变量,

具体使用参照Bullet的文档

销毁一个物理世界

创建一些简单的body

由于每种body都有自己的材质信息

btRigidBodyConstructionInfo是构造一个刚体信息的结构体,

我们只需关心几个参数,

Bullet(Cocos2dx)之封装PhysicsWorld3D

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发现以前有些东西又套用不了。所以又写了一篇札记,顿时感觉自己萌萌哒。完全没有玩

本文链接地址:https://www.jiuchutong.com/biancheng/372623.html 转载请保留说明!

上一篇:cocos2dx3.2 xcode中资源路径设置问题

下一篇:浅谈cocos2dx手游开发CPU发热严重之见(cocos 2dx)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络