我需要知道如何使用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);