我需要知道如何使用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);
}
答案 0 :(得分:2)
使用box2D,您只需要设置其初始位置和初始速度(通过applyForce
)。 Box2d将负责其余部分,施加重力,在击中其他物体时停止等。
答案 1 :(得分:1)
实际上,你可以通过调用:
直接设置身体的位置body->SetTransform(vector,angle)
答案 2 :(得分:1)
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));
self.projectileBody->SetLinearVelocity(vector);