博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Box2D自定义重力
阅读量:6307 次
发布时间:2019-06-22

本文共 1200 字,大约阅读时间需要 4 分钟。

需要给刚体添加一个自定义的属性:m_customGravity,这样就可以动态的修改每一个刚体自定义的重力,查找box2d源码大约在5486行,加上红色的一句代码

 

b2Island.prototype.Solve = function (step, gravity, allowSleep) {      var i = 0;      var j = 0;      var b;      var joint;      for (i = 0;      i < this.m_bodyCount; ++i) {         b = this.m_bodies[i];         if (b.GetType() != b2Body.b2_dynamicBody) continue;         gravity = b.m_customGravity || gravity;                  b.m_linearVelocity.x += step.dt * (gravity.x + b.m_invMass * b.m_force.x);         b.m_linearVelocity.y += step.dt * (gravity.y + b.m_invMass * b.m_force.y);         b.m_angularVelocity += step.dt * b.m_invI * b.m_torque;         b.m_linearVelocity.Multiply(b2Math.Clamp(1.0 - step.dt * b.m_linearDamping, 0.0, 1.0));         b.m_angularVelocity *= b2Math.Clamp(1.0 - step.dt * b.m_angularDamping, 0.0, 1.0);      }..............代码略...........................................................................................};

 

使用的方法:

//创建一个圆形刚体
var circle = new Circle({x:mousePoint.x,y:mousePoint.y,r:20,type:sc.dynamicBody});
//给该刚体加上m_customGravity属性,并赋值垂直重力为1
circle.b2Obj.body.m_customGravity = new xengine.EasyB2D.b2Vec2(0,1);

转载于:https://www.cnblogs.com/gongshunkai/p/5818556.html

你可能感兴趣的文章
react脚手架应用以及iview安装
查看>>
shell学习之用户管理和文件属性
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
仍需"敬请期待"的微信沃卡
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
POJ 2918 求解数独
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
Mysql explain
查看>>
初识闭包
查看>>
java tcp socket实例
查看>>
011 指针的算术运算
查看>>
hdu1874畅通工程续
查看>>
rails 字符串 转化为 html
查看>>
java-学习8
查看>>
AOP动态代理
查看>>
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>