リリース時にbox2dインパルス

私は私の指をリリースするときに衝動を適用したいと思ったが、私はそれを働かせることができませんでした。オブジェクト本体は自分の入力に再作用しません。ここにリリース用のコードがあります。

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (mouseJoint != nil) return;

UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);

float distanceX = location.x-170;
float distanceY =location.y-270;
float distance = sqrtf(distanceX*distanceX+distanceY*distanceY);
CGFloat angle = atan2f(distanceY,distanceX);

// Apply an impulse to the body, using the angle
tailBody->ApplyLinearImpulse(b2Vec2(-distance*cosf(angle)/4+100,-distance*sinf(angle)/4+100), tailBody->GetPosition());

if (mouseJoint) {
    world->DestroyJoint(mouseJoint);
    mouseJoint = NULL;
}


}

コードに何か不足していますか?

0
ApplyLinearImpulseに与える値を印刷して意味があるかどうか確認してください。たぶん彼らはちょうど小さすぎる、あなたはそれらを大きくしてみましたか?あなたがタッチの方向に、またはタッチから離れるようにしようとしているように見えるので、タッチと身体の間のベクトルを使用してインパルスの方向を得ることができ、atan2fとsinf/cosfのものは必要ありません。
追加された 著者 iforce2d,
値を追加してカットしようとしましたが、うまくいかないようです。オブジェクトはapplylinearimpulseメソッドに応答しません。これはこの関数のフラッシュの例です。何か案が? emanueleferonato.com/2011/10/10&…
追加された 著者 Bek,
ちょっとiforce2dあなたの応答のために非常にありがとう、私はBox2d(私は4days、笑)のためにそれを使用し始めたばかりの新しい妖精です。私は私の問題を理解しました。私がしなければならないのは、if(mouseJoint!= nil)return;を取り除くことだけです。それでもあなたの反応に感謝します
追加された 著者 Bek,

答えはありません

0