0

Farseer Physics Engine を使用して、C# と XNA を使用して PC 向けの「モンスター ダッシュ」のようなゲームを構築しています。テクスチャを使用してボディを動かそうとしています。テクスチャはパーツから構築されているため、基本的にはすべて一緒に移動する必要があります。次のようになります。

    public void Update()
    {
        tilingFloorPosition.X += (floorMoveSpeed / MeterInPixels);
        _tilingFloorBody.Position = tilingFloorPosition;

        // Update the textures position
        for (int i = 0; i < texturePositions.Length; i++)
        {
            texturePositions[i].X += floorMoveSpeed;
        }
    }

しかし、プレーヤーが床の上に着地するたびに、そこには何もないように通過します。何が間違っているのでしょうか?

4

1 に答える 1

0

プレーヤーが床から落下している場合、床の本体が実際には位置にないか、2 つの本体が衝突していないとしか考えられません。床が正しく配置されていることを確認できますか? 可能であれば、Farseer Debug View をオンにします。もしそうなら、衝突は起きていないはずです。

小切手:

  • プレーヤーと床の両方がセンサーではないこと。
  • それらが同じCollisionCategory内になく、それらの少なくとも 1 つが他のCollidesWithCategory内に含まれていること。
  • ボディの 1 つを他のIgnoreBodyリストに追加していないこと。
  • 体型が衝突すること。参照: Farseeer ボディ タイプ.

また、位置を手動で設定すると衝突がスキップされる可能性があることに注意してください。代わりに LinearVelocity を設定してみてください。

于 2011-12-11T22:46:21.003 に答える