使用Box2d的弹丸运动。

时间:2011-09-09 05:55:56

标签: cocos2d-iphone box2d-iphone

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

} 

3 个答案:

答案 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);