问题描述
- 关于Box2d-自定义重力
-
下面是我在网上找的关于Box2d-自定义重力的设置教程---cocos2dx box2d 自定义/重置重力
Box2D中的Dynamics包下有一个b2Island类,类中有一个Solve方法,这方法通过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;
所谓重置重力,就是在这里动手脚了。要怎么做呢?把这个gravity形参改成我们想要的重力,比如可以像下面的代码,设置为0.
gravity = new b2Vec2(0, 0); 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;
或者我们用了一个更便于重用的方法,在b2Body类添加一个b2Vec2类型的公共属性m_customGravity,然后在b2Island.Solve()方法中,判断是否设置了刚体的m_customGravity属性,如果有,则用m_customGravity进行重力模拟计算。然后我们在创建刚体时,只要设置一下m_customGravity属性就可以轻松重置重力了。
//2012-7-27 //added by ladeng6666 //如果刚体有自定义m_customGravity属性,则用其进行重力模拟计算 if (b.m_customGravity != null) { LDgravity = b.m_customGravity; }else { LDgravity = gravity; } //用更新后的LDgravity属性进行重力模拟计算 b.m_linearVelocity.x += step.dt * (LDgravity.x + b.m_invMass * b.m_force.x); b.m_linearVelocity.y += step.dt * (LDgravity.y + b.m_invMass * b.m_force.y); b.m_angularVelocity += step.dt * b.m_invI * b.m_torque;
请问在"或者我们用了一个更便于重用的方法,在b2Body类添加一个b2Vec2类型的公共属性"之后的操作..
应该怎么完成,语句应该怎么添加?b2Body类跟b2Island我都找到了已经.但是具体修改.我试了一下都有错误
教程原文地址:
http://www.ladeng6666.com/blog/2012/09/06/box2d%E8%87%AA%E5%AE%9A%E4%B9%89%E9%87%8D%E5%8A%9B/我已经在b2Body.h中添加
还是应该放在这里呢?
有人说原教程的是AS的代码..会不会有影响呢?
解决方案
我时那篇教程的作者,你的贴图是盗链,看不到原图,你可以微博@ladeng6666,我看看能否帮的上你!