2014-03-19 5 views
0

후 오프 화면 이동 :스프라이트 충돌

if (Is_hit == true && ballFired == true) 
    { 
     //collision here 
     ballXPos = 960 - ballimg.Width - (ballXPos - 960 + ballimg.Width); 
     ballXDir = +1; 

     ballYDir = -1; 
    } 

    if (Ballvisible == true) 
    { 


     if (Keyboard.GetState().IsKeyDown(Keys.Space) && ballFired == false) 
     { 
      ballFired = true; 

     } 
     if (ballFired == true) 
     { 


      ballXPos = ballXPos - (ballSpeed * ballXDir); 

      ballYPos = ballYPos + (ballSpeed * ballYDir); 

     } 
     if (ballXPos < 0) 
     { 
      ballXPos = -ballXPos; 
      ballXDir = -1; 


     } 
     if (ballXPos > 960 - ballimg.Width) 
     { 
      ballXPos = 960 - ballimg.Width - (ballXPos - 960 + ballimg.Width); 
      ballXDir = +1; 


     } 
     if (ballYPos < 0) 
     { 
      ballYPos = +ballYPos; 
      ballYDir = +1; 

     } 
     if (ballYPos > 700 - ballimg.Height) 
     { 
      Ballvisible = false; 
     } 


    } 
    if (Ballvisible == false) 
    { 

     ballSpeed = 3; 
     ballXDir = -1; 
     ballYDir = -1; 

     ballXPos = 450; 
     ballYPos = 590; 
     ballFired = false; 
     Ballvisible = true; 
    } 



} 

을하지만 충돌이 발생하면 공은 다른 스프라이트에게 (플레이어 패를 반송됩니다) 성공적으로하지만이 프로그램은이 코드를 무시하는 것처럼 보이며 볼이 화면에서 곧바로 진행됩니다.

충돌 코드 : 당신이 Is_hit 플래그를 취소하는 것을 잊었다처럼

// paddle collison detection 
      if 
    ( gameball.PositionRectangle_ball.Intersects(paddle.PositionRectangle_paddle)) 
      { 

    collision_paddle = true; 
       gameball.CheckCollision(collision_paddle); // passes the collision bool value 
      } 
+0

가 혹시'Is_hit' 플래그를 지우나요? –

+0

안녕하세요, 고마워요! 나는 그것을 재설정해야한다는 것을 잊어 버렸고, 나는 충돌 체크 밖에서 리셋을 시도했다. 그리고 그것은 게임이 다소 이상하게 행동하게 만든다. 충돌이 없다면 어떻게 재설정 하시겠습니까? – Bobby

+0

다른 곳에서는 체크 할 필요가 없다면, 게시 된 코드의 첫 블록에서이를 지울 것입니다. '충돌 // 여기에 있습니다.' –

답변

0

것 같습니다. 다른 곳을 체크 할 필요가없는 경우

당신이 게시 된 코드의 첫 번째 블록을 취소 할 수 있습니다

if (Is_hit == true && ballFired == true) 
{ 
    //collision here 
    ballXPos = 960 - ballimg.Width - (ballXPos - 960 + ballimg.Width); 
    ballXDir = +1; 

    ballYDir = -1; 
    Is_hit = false; 
} 
관련 문제