私はこのような迷路を作成しています:
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 - 粒子は境界線に合わせて移動/跳ね返らない