2

物理ヘルパーライブラリを使用します。

私は、物理オブジェクトが静止しているかどうかをどのように判断できるかを理解しようとしています。誰かがこれを行う方法を知っているか、私が何ができるかについて何かアイデアがありますか?

シナリオの例は、拾い上げて投げることができるスーパーボールです。床との衝突イベントからの個々の跳ね返りを計り、それに基づいてオブジェクトが静止しているかどうかを判断するタイマーを作成してみましたが、ユーザーがボールを左右にスライドさせた場合、これは機能しません。

助言がありますか?

4

3 に答える 3

2

基礎となる Farseer への実行時アクセス権がある場合は、大きさを確認できるBodyproperty へのアクセス権も必要です。LinearVelocity0

于 2011-07-24T23:21:45.473 に答える
1

これはかなり基本的なものです。物理オブジェクトは、オブジェクトの位置、速度などに関する情報を含むある種のクラスのインスタンスである必要があります。いつでも、オブジェクトの速度を確認でき、明らかにその速度が0であるかどうかを確認できます。 、静止しています。

于 2011-07-24T16:10:11.707 に答える
0

これまでのところ、私は簡単な方法を思いつきました。2 つのクラス変数 (Vector2 currentPosition、Vector2 previousPosition) を作成し、次の tick メソッドを使用して頻繁にティックするディスパッチャー タイマーを作成します。

void bounceTimer_Tick(object sender, EventArgs e)
    {
        currentPosition = ball.Position;

            if (currentPosition == previousPosition)
            {
                // Object at rest
            }
            else
            {
               // Object moving
            }
        }

        previousPosition = currentPosition;
    }

これにはいくつかの問題がありますが、たとえば、空中でボールの位置が上昇してから同じ位置に戻ってくるのをキャプチャする場合 (ほとんどありません)、非常に高い頻度でカチカチ音をたてると、予期せず同じ位置をキャプチャすることがあります。オブジェクトが静止しているかどうかを判断するのに時間がかかるティックの頻度が遅い、他の誰かがより良い方法を持っていますか?

于 2011-07-24T17:21:46.043 に答える