HTML5技术

Box2D自定义重力 - 愚人的一天

字号+ 作者:H5之家 来源:博客园 2016-08-30 15:00 我要评论( )

需要给刚体添加一个自定义的属性:m_customGravity,这样就可以动态的修改每一个刚体自定义的重力,查找box2d源码大约在5486行,加上红色的一句代码 b2Island.prototype.Solve = function (step, gravity, allowSleep) { var i = 0 ; var j = 0 ; var b; var

需要给刚体添加一个自定义的属性: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);

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5自定义属性之data-* - 缥缈飞云

    HTML5自定义属性之data-* - 缥缈飞云

    2016-08-26 13:00

  • h5自定义audio(问题及解决) - we are young

    h5自定义audio(问题及解决) - we are young

    2016-08-23 11:00

  • 【无私分享】干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择烦恼,纯福利~ - 南尘

    【无私分享】干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择

    2016-08-12 12:00

  • CSS3和jQuery实现的自定义美化Checkbox - roucheng

    CSS3和jQuery实现的自定义美化Checkbox - roucheng

    2016-05-16 17:00

网友点评