2011-09-30 33 views
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; 
     } 
    } 

但是,每当我的球员的土地在地板之上,他只是通过它去像有什么都没有,我究竟做错了什么?

回答

0

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

检查:

  • ,无论是球员和地板都没有传感器
  • 它们不在同一个CollisionCategory并且其中至少有一个包含在其他CollidesWith类别中。
  • 你还没有添加其他人的身体IgnoreBody列表。
  • 体型会发生碰撞。见:Farseeer Body Types

另外,值得一提的是,手动设置位置可能会跳过碰撞。尝试改为设置LinearVelocity。

+0

谢谢!这真的很有帮助! – Itamar