0

私はこのような迷路を作成しています:

agentBody = BodyFactory.CreateBody(world, position);
_agentBody.BodyType = BodyType.Dynamic;
_agentBody.IgnoreGravity = true;
_agentBody.Restitution = 0.1f;
_agentBody.Friction = 1f;

_offset = ConvertUnits.ToDisplayUnits(1.5f);

FixtureFactory.AttachRectangle(3f, 0.1f, 1f, new Vector2(0, 1.55f), _agentBody);
FixtureFactory.AttachRectangle(3f, 0.1f, 1f, new Vector2(0f, -1.55f), _agentBody);
FixtureFactory.AttachRectangle(width, 3f, 1f, new Vector2(-1.55f, 0f), _agentBody);
FixtureFactory.AttachRectangle(width, 3f, 1f, new Vector2(1.55f, 0f), _agentBody);

そして私の砂の粒子は次のようになります:

for (int i = 0; i < 8; i++){
    _sands[i] = BodyFactory.CreateRectangle(_world, 0.05f, 0.05f, 1f);
    _sands[i].IsStatic = false;
    _sands[i].Restitution = 0.1f;
    _sands[i].Friction = 0.1f;
    _sands[i].Position = new Vector2(1.8f + i * 0.2f, 2.2f);
}

_sand = new Sprite(
    ScreenManager.Assets.TextureFromShape(
        _sands[0].FixtureList[0].Shape,
        MaterialType.Dots,
        Color.SandyBrown, 0.8f
    ));

デバッグ ビューでフィクスチャを確認しましたが、問題ないようです。しかし、そうではありません。粒子が画面に表示されると、(重力のために) 落下し、問題なく迷路の境界を通過し、静的な物体がある下部で停止します。何故ですか?パーティクルが迷路で止まらないのはなぜですか?

コンテキストについては、私の以前の質問を参照してください:
Farseer - 粒子は境界線に合わせて移動/跳ね返らない

4

1 に答える 1

0

私は farseer にはあまり詳しくありませんが、少し前のプロジェクトで覚えているのは、フィクスチャの 'CollidesWith' プロパティを使用したことです。

何かのようなもの :

fixture.CollisionFilter.CollidesWith = CollisionCategories.All;

それ以外の場合は、codeplex プロジェクトのディスカッション ボードで多くの情報を提供できます。

于 2012-10-17T11:14:35.510 に答える