1

まず、これは StackOverflow でここに書いた最初の投稿であり、実際にはプログラミングは初めてなので、何か間違ったことを言ったらごめんなさい。

私はこれを機能させようと試みました-空中で静止している体をシミュレートしたいので、そのためにSetLinearVelocity(new b2Vec2(0, 0)).

他の投稿で読んだように、重力ベクトルが重要であるようです: それは でb2Vec2(0, 30);あり、タイムステップは 1/30 秒です。

その特定のボディのメカニズムを処理するコードは次のとおりです。

this.clocktick = function(deltaT) {
    this.body.SetLinearVelocity(new b2Vec2(0, 0));

    if(this.body.GetLinearVelocity().y != 15){
        console.debug(this.body.GetLinearVelocity().y);
    }
}

本体が常に下降しているのはおかしいと思います。下降しているにもかかわらず、デバッグが値 0 を返すという状況がすでにありました。

私がシミュレートしようとしているものをシミュレートするための解決策またはその他の提案から聞きたいです。

どうも

4

1 に答える 1

2

速度を設定するのではなく、力を適用して重力をキャンセルする必要があります。速度を設定しただけでも、重力は時間ステップごとに速度を少しずつ押し下げることができます。力は適用される重力と同じである必要があるため、重力ベクトルとオブジェクトの質量を考慮する必要があります。

body.ApplyForce( body.GetMass() * -world.GetGravity(), body.GetWorldCenter() );

...そして、すべての時間ステップのにこれを行う必要があります。

于 2012-07-19T01:09:10.320 に答える