0

我正在使用 Farseer Physics Engine 使用 C# 和 XNA 为 PC 构建类似“Monster Dash”的游戏,我正在尝试使用它的纹理移动一个身体,纹理是由零件构建的,所以它们应该一起移动,基本上它看起来像这样:

    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

如果玩家从地板上掉下来,那么我只能假设地板的身体实际上没有到位,或者两个身体没有碰撞。你能确认地板的位置确实正确吗?如果可以,请打开 Farseer 调试视图。如果是这样,那么碰撞一定不会发生。

查看:

  • 球员和地板都不是传感器
  • 它们不在同一个CollisionCategory中,并且至少其中一个包含在其他CollidesWithCategory中。
  • 您尚未将其中一个实体添加到其他IgnoreBody列表中。
  • 身体类型会发生碰撞。请参阅:Farseeer 身体类型

此外,值得注意的是,手动设置位置可能会跳过碰撞。尝试设置 LinearVelocity。

于 2011-12-11T22:46:21.003 回答