2013-05-30 9 views
0

XNA에서 탁구를 만들고 있는데 볼 패들 충돌에 문제가 있습니다. 외륜의 측면이 올바르게 작동하지만 상단과 하단이 이상하게 작동합니다. 나는 많은 일을 시도했지만 여전히 효과가 없습니다. 이 내 현재 코드입니다 :XNA Pong collision

 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 

공의 중심을 확인합니다. 이것은 공을 표면에 반사 시키지는 않지만 중심점에 반영합니다.

이상한 행동을 수정하려고 시도하지 않은 경우 발생한 문제를 해결할 수 있습니까?