2013-07-16 84 views
0

我已經在這個主題上看到了一些答案,但沒有一個真的有太大的幫助。XNA BoundingBox&Origin

很簡單,BoundingBox碰撞。將原點設置爲0,0時,碰撞發生得很好(至少對於我的需要)。正如我指定播放機的起源中心(所以它圍在中間旋轉)的碰撞似乎是抵消它在錯誤的時間

代碼(玩家類)檢測碰撞:

 box = new BoundingBox(new Vector3(location, 0), new Vector3(location.X + texture.width, location.Y + texture.height, 0)); 
    origin = new Vector2(texture.Width/2, texture.Height/2); 

      location.X += speed * (float)Math.Cos(rotation - anglecorrection); 
      location.Y += speed * (float)Math.Sin(rotation - anglecorrection); 

public BoundingBox getBox() 
     { 
      return box; 
     } 

代碼(遊戲)

BoundingBox box2 = new BoundingBox(new Vector3(location, 0), new Vector3(location.X + 30, location.Y + 30, 0)); 

if (player.getBox().Intersects(box2)) 
      { 
       // Do Stuff 
      } 

感謝您的幫助:)

+0

你的碰撞檢測代碼是什麼樣的? –

+0

和那個代碼在哪裏?它在你的播放器內嗎?是'box'和'origin'實例變量嗎?如果他們不是發生在他們身上? –

+0

你的碰撞偏移是什麼方式?它是否會被原始矢量的大小所抵消?它被更多的抵消? –

回答

0

多玩弄我能找到工作的決議之後。

我使用名爲box2的BoundingBox設置了景物,並且在其中心還有一個原點。

所以,如果兩個對象具有相同的原點,那麼這似乎解決了這個問題。