c# - 碰撞功能无法正常工作

标签 c# breakout

我目前正在开发一款与“Breakout”类似的游戏。我遇到的问题是,每当球越过砖 block 的边缘时,它既不会移除砖 block 也不会改变球的方向。

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)

但这似乎是在检查球的顶部是否大于砖的高度,而不是检查砖的位置。那里可能有问题吗?

如果这不是问题,我的建议是添加一些调试代码来输出球和砖 block 位置和高度的值,这样您就可以了解您的计算出了什么问题。

关于c# - 碰撞功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440609/

相关文章:

c# - 我的 GUID 是如何损坏的?

Java随机颜色 block

c++ - 我应该如何将对象传递给类以检查碰撞?

c# - 例如,是否有一些 .NET 机器学习库可以为问题建议标签?

c# - GetCustomAttributes 不返回值

java - Breakout(游戏项目)-让球位于 Racket 中心-Java

javascript - 如何确定哪些图像被按键移动

C# WinForm 上下拖动点击

c# - .Net 标准的自定义 System.Web.HttpContext