我目前正在开发与“突破”类似的游戏。问题在于,只要球越过砖的边缘,它都不会移开砖或改变球的方向。
if (ball.Left > l.Left && (ball.Left + ball.Width) < l.Left-margin + l.Width)
{
if (ball.Top > l.Height && ball.Top < l.Top)
{
this.Controls.Remove(l);
ballDX *= -1;
ballDY *= -1;
}
else if (ball.Top < l.Height && ball.Top > l.Bottom)
{
this.Controls.Remove(l);
ballDX *= +1;
ballDY *= +1;
}
}
最佳答案
查看您的代码,您正在测试
if (ball.Top > l.Height && ball.Top < l.Top)
但这似乎是在检查球的顶部是否大于砖的高度,而不是砖的位置。那里可能有问题吗?
如果这不是问题,我的建议是添加一些调试代码以输出球和砖位置和高度的值,以便您可以了解计算中的错误。
关于c# - 碰撞功能无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37440609/