2011-09-30 84 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