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 に答える