使用Box2d进行抛射运动



我需要知道如何使用box2d投射运动。

最初,projectileTime = 0;然后我调用下面的抛射运动函数。效果很好。但我想实现同样的事情使用box2d。据我所知Box2d只与力一起工作,它不鼓励直接放置物体,那么如何使用Box2d来进行抛射运动??

-(void)projectilelaunched:(ccTime)dt 
{
    projectileTime+=(5*dt);
    double vh=v*cos(theta);
    x=vh*projectileTime;
    double y = x*tan(theta)- 10*((x/vh)*(x/vh))/2;
    projectile.position=ccp(projectilePositionBeforeLaunched.x + x,projectilePositionBeforeLaunched.y+y);
} 

对于box2D,您只需要设置其初始位置和初始速度(通过applyForce)。Box2d将负责其余部分,施加重力,在撞击其他物体时停止等。

实际上,您可以通过调用

来直接设置正文的位置:
body->SetTransform(vector,angle)
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));
self.projectileBody->SetLinearVelocity(vector);

最新更新