2014-01-06 91 views
0

當我運行這個時,球接近左邊槳後,它會或者反彈四分之一屏幕,擊中槳然後球離開只是一點點,它開始來回跳動,彷彿如果它正在撞牆。 你能看到我做錯了什麼(或不這樣做,我應該)?XNA Pong故障

ballPos是球位置的Vector2值。 paddleStaticPos.X是槳葉的X位置(位於左側牆壁的5處) paddlePos.X是左側槳葉的Y值。

我知道我應該分別使用左右槳的矢量值而不是綁定,但我沒有時間去修復它了。 下面是代碼:

  if (ballPos.X <= paddleStaticPos.X + 15) 
      { 
       if (ballPos.Y <= paddlePos.X + 25 && ballPos.Y >= paddlePos.X) 
       { 
        gameStartpaddleHit = true; 
        lastPaddleHitLeft = true; 
        ballLeft = ballLeft * -1; 
        ballUp = ballUp * -1; 
        soundEffect[0].Play(); 
       } 
      } 
      //Sedond Sector(26-100[MIRROR EFFECT]) 
      int tmp2=ballLeft; 
      if (ballPos.X <= paddleStaticPos.X + 15) 
      { 
       if (ballPos.Y <= paddlePos.X + 99 && ballPos.Y >= paddlePos.X + 26) 
       { 
        gameStartpaddleHit = true; 
        lastPaddleHitLeft = true; 
        ballLeft = tmp2 * -1; 
        soundEffect[0].Play(); 
       } 
      } 


      //Third Sector(101-125[SHARP ANGLE DEFLECT]) 
      if (ballPos.X <= paddlePos.X + 15) 
      { 
       if (ballPos.Y <= paddlePos.X + 125 && ballPos.Y >= paddlePos.X + 100) 
       { 
        gameStartpaddleHit = true; 
        lastPaddleHitLeft = true; 
        ballLeft = ballLeft * -1; 
        ballUp = ballUp * -1; 
        soundEffect[0].Play(); 
       } 
      } 

如果你喜歡引擎收錄:http://pastebin.com/K0PitFcQ

回答

0

你反對paddlePos測試ballPos Y X

if (ballPos.Y <= paddlePos.X + 25 && ballPos.Y >= paddlePos.X) 

它不應該是這樣?

if (ballPos.Y <= paddlePos.Y + 25 && ballPos.Y >= paddlePos.Y)