2011-09-09 8 views
1

私は発射動作に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); 

} 

答えて

2

をBOX2Dで、あなただけの(applyForceを経由して)その初期位置と初期速度を設定する必要があると思います。他のオブジェクトに当たったときに停止します。

1

は実際に、あなたが直接呼び出すことにより、身体の位置を設定することができます。

body->SetTransform(vector,angle) 
+1

しかし、これは手作業で物理シミュレーションの力を手に入れたときにはちょっと変わった位置を手動で計算する必要があります。 – Lukman

+0

@gixdev、あなたの答えはまたhelpful.soありがとうございます。 – russell

1
b2Vec2 vector = self.speed * b2Vec2(cos(angle), sin(angle)); 

self.projectileBody->SetLinearVelocity(vector); 
関連する問題