2

XNAでゲームを作っています。 ここに画像の説明を入力

敵がプレイヤーを見ることができるかどうかを判断するために、敵からプレイヤーにレイキャストを行っています。コードはこちら..

 private float RayCallBack(Fixture fixture, Vector2 point, Vector2 normal, float fraction)
    {
        rayhit = fixture.Body.UserData.ToString();
        if (fixture.Body.UserData == "player")
        {
            //AIawake = true;
        }
        return 0f;
    }


     _world.RayCast(RayCallBack, _blocklist[0]._floor.Position , ConvertUnits.ToSimUnits(playerpos));

私の問題は、ブロックから作られた洞窟をプロシージャルに生成した写真の状況では、光線がブロックを通過しているように見えるため、敵が壁を通して見ることができることです。

--

アップデート

次のコードは機能します。しかし..理由がわかりません!! :/

 private float RayCallBack(Fixture fixture, Vector2 point, Vector2 normal, float fraction)
    {
        rayhit = fixture.Body.UserData.ToString();
        if (fixture.Body.UserData == "player")
        {
            return fraction;
        }
        else
        {
            return 0f;
        }
    }

次に、このクラスの別の更新ステートメントに、敵を目覚めさせるコードを含めます。

    if (rayhit == "player") AIawake = true;

レイキャストとコールバックがどのように機能するかは明らかにわかりません。この方法が機能する理由を誰かが説明できれば、それは素晴らしいことです。敵が何かに衝突するのを止めるために、さらに多くのレイキャスティングを行うことを計画しています。

4

1 に答える 1