移动与纹理的身体

时间:2011-09-30 01:16:39

标签: c# xna game-physics farseer

我正在使用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;
        }
    }

但每当我的球员落在地板上时,他就会通过它,就像那里什么都没有,我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果玩家在地板上掉落,那么我只能假设地板的实体不在位,或者两个物体没有碰撞。你能否确认地板确实正确定位?如果可以,请打开Farseer调试视图。如果是这样,则不得发生碰撞。

检查:

  • 玩家和地板都不是传感器
  • 他们不属于同一个 CollisionCategory ,其中至少有一个包含在其他 CollidesWithCategory 中。
  • 您尚未将其中一个正文添加到其他 IgnoreBody 列表中。
  • 体型会发生碰撞。请参阅:Farseeer Body Types

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