2013-05-30 127 views
0

我在XNA做了一個乒乓球比賽,我遇到了球碰撞的問題。 槳的側面正常工作,但頂部和底部是actring奇怪。我嘗試了很多東西,但仍然無法正常工作。 這是我當前的代碼:XNA Pong碰撞

 protected override void Update(GameTime gameTime) 
     { 

      //Intersection 
      if (bPos.Intersects(p1Pos)) 
      { 
       //top 

       //bottom 

       //middle 
       if (bPos.X <= p1Pos.X + p1Pos.Width) 
        bSpd.X = -bSpd.X; 
      } 
      if (bPos.Intersects(p2Pos)) 
      { 
       //top 

       //bottom 

       //middle 
       if (bPos.X + bPos.Width >= p2Pos.X) 
        bSpd.X = -bSpd.X; 
      } 

      bPos.X = bPos.X + (int)bSpd.X; 
      bPos.Y = bPos.Y + (int)bSpd.Y; 

      if (bPos.Intersects(p1Pos)) 
      { 
       //top 

       //bottom 

       //middle 
       if (bPos.X <= p1Pos.X + p1Pos.Width) 
        bSpd.X = -bSpd.X; 
      } 
      if (bPos.Intersects(p2Pos)) 
      { 
       //top 

       //bottom 

       //middle 
       if (bPos.X + bPos.Width >= p2Pos.X) 
        bSpd.X = -bSpd.X; 
      } 

      base.Update(gameTime); 
     } 
+0

請將您的問題縮小到幾行... –

+0

現在代碼少了,所以更容易閱讀 – victorheld

回答

0

我只是假設你的程序的一些屬性。 當你撥打:

bPos.X <= p1Pos.X + p1Pos.Width 

這個檢查你的球的中心。這不會反映球的表面,但它的中心點。

如果這不是您嘗試修復的奇怪行爲,請您澄清您遇到的行爲嗎?