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
}
가 혹시'Is_hit' 플래그를 지우나요? –
안녕하세요, 고마워요! 나는 그것을 재설정해야한다는 것을 잊어 버렸고, 나는 충돌 체크 밖에서 리셋을 시도했다. 그리고 그것은 게임이 다소 이상하게 행동하게 만든다. 충돌이 없다면 어떻게 재설정 하시겠습니까? – Bobby
다른 곳에서는 체크 할 필요가 없다면, 게시 된 코드의 첫 블록에서이를 지울 것입니다. '충돌 // 여기에 있습니다.' –