1

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

} 
4

3 回答 3

2

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

于 2011-09-09T10:23:55.070 回答
1

实际上,您可以通过调用直接设置身体的位置:

body->SetTransform(vector,angle)
于 2011-09-09T10:19:47.787 回答
1
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle));

self.projectileBody->SetLinearVelocity(vector);
于 2012-12-07T14:55:34.893 回答