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;
}
}
,但一旦发生碰撞的球会弹开另一个精灵(玩家桨)成功,但程序似乎忽略了这个代码,球将直接离开屏幕。
碰撞代码:
// 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
如果我不需要在其他任何地方检查它,我会在发布的代码的第一个块中清除它,其中包含评论'// collision here' –