box2d刚体添加初始速度,力

来源:互联网 发布:windows查看gif 编辑:程序博客网 时间:2024/05/22 06:46


ApplyForce、ApplyImpulse和SetLinearVelocity。

它们都是b2Body类的公共方法,而且它们都接收一个b2Vec2类型向量参数。关于向量的知识。
1.力,循序渐进——ApplyForce

顾名思义,ApplyForce方法会在刚体上施加一个力。学过物理力学的同学都知道,F=ma,有了力F就有了加速度a,有了加速度,物体就会有速度,就会慢慢动起来。(但是不会立马动起来,因为力不度)。

ApplyForce施加的力可以叠加,如

ballBody->ApplyForce(force1,ballBody->GetWorldCenter());//GetWorldCenter()方法用来获取刚体的重心

ballBody->ApplyForce(force2,ballBody->GetWorldCenter());

这样施加给ballBody的力就为force1与force2的和。

举个简单的例子,小明推一个静止的箱子,箱子不会立马飞出去,而是慢慢的、越来越快的动起来(减速也一样)。

2.速度,叠加——ApplyImpulse

与ApplyForce不同,ApplyImpulse不会产生力,而是直接影响刚体的速度。通过ApplyImpulse方法添加的速度会与刚体原有的速度叠加,产生新的速度。

3.一触即发——SetLinearVelocity

setLinearVelocity与ApplyImpulse一样,直接影响刚体的速度。不一样的是,setLinearVelocity添加的速度会覆盖刚体原有的速度。不过,在SetLinearVelocity方法不会自动唤醒sleeping的刚体,所以在调用该方法之前,记得将刚体body.wakeUp()一下。

b2Vec2 velocity = b2Vec2(x,y);
 ballBody->SetLinearVelocity(velocity);//设置刚体的速度

velocity1 = ballBody->GetLinearVelocity();//得到刚体的速度


0 2
原创粉丝点击