3

私のゲーム ワールドの誰もが、センサー シェイプが取り付けられたフィクスチャを持っています。レイキャストすると、これらのフィクスチャにヒットしますが、少なくとも 1 つの形状がセンサーではないフィクスチャにのみヒットしたいと考えています。これは可能ですか?

Box2dx - C# ポートを使用しています。

また、コールバックは何をしますか?

     world.PhysicsWorld.RayCast((f, p, n, fr) =>
        {
            fixture = f;
            position = p;
            return fr;
        }, point1, point2);

これは、私が呼び出しているレイキャスト関数です。ドキュメントには、コールバックを使用して取得する形状の数を指定できると書かれていますが、その方法がわかりません。

    /// Ray-cast the world for all fixtures in the path of the ray. Your callback
    /// controls whether you get the closest point, any point, or n-points.
    /// The ray-cast ignores shapes that contain the starting point.
    /// @param callback a user implemented callback class.
    /// @param point1 the ray starting point
    /// @param point2 the ray ending point
    public void RayCast(Func<Fixture, Vector2, Vector2, float, float> callback, Vector2 point1, Vector2 point2)
    {
        RayCastInput input = new RayCastInput();
        input.maxFraction = 1.0f;
        input.p1 = point1;
        input.p2 = point2;

        _rayCastCallback = callback;
        _contactManager._broadPhase.RayCast(_rayCastCallbackWrapper, ref input);
        _rayCastCallback = null;
    }
4

1 に答える 1

1

他の誰も答えていないので、私が理解できることを説明します。提供されるドキュメントは少し大雑把です。関数は明らかに別のコードに依存して実際の作業を行います。C#がわからないので、できます。あなたにすべてを教えてください。

コールバックは、結果を提供する関数メソッドです。指定されたパラメーターのセットを受け入れる関数を作成する必要があります。RayCastを呼び出すときにその関数をパラメーターとして渡します。次に、重複が見つかったときに関数が呼び出されます。コールバック関数は、レイキャストを続行するかどうかを示す値を返す場合があります。trueまたはtrueのいずれかを返す必要があると思います。 false。

センサー以外の配列を持つフィクスチャのみを選択するための最善の策は、おそらくコールバック関数でこれをチェックし、その基準が満たされた場合にのみ動作することです。

于 2010-04-08T23:54:30.820 に答える