我目前正在C#
处理一个简单的球碰撞程序,其中不确定的球在屏幕周围反弹,每个都被添加到单击按钮时的程序。到目前为止,我已经完成了所有工作,并且我有一个基本的碰撞系统。现在,我正在尝试为球添加更多逼真的物理。
问题是,我对物理学知之甚少。我一直在阅读有关矢量物理学的一些内容,并且我得到了它的要点,但我并没有完全理解我所阅读的内容以及我应该如何以编程方式实现这些概念。任何人都可以为我提供一些实际上应该如何实现矢量物理的资源,就像我写的一个简单的球碰撞程序一样吗?
这就是我现在所拥有的。它基本上只是两个布尔,决定我的球是否进入四个方向之一。当两个球碰撞时,它们只是将它们的方向传递给彼此。
public void newball(PaintEventArgs e, int panelWidth, int panelHeight)
{
//Detects walls of form. if it detects a wall or another ball, it bounces
if (X >= panelWidth)
{
bounceX = true;
}
else if (X <= 25)
{
bounceX = false;
}
if (Y >= panelHeight )
{
bounceY = true;
}
else if (Y <= 25)
{
bounceY = false;
}
//balls only go in four directions right now have to implement vector physics.*/
if (bounceX == false)
{
X = X+2;
}
else if (bounceX == true)
{
X = X -2;
}
if (bounceY == false)
{
Y = Y+2;
}
else if (bounceY == true)
{
Y = Y-2;
}
//this draws the ball on the panel.
Pen clsPen = Pens.Black;
Color color = Color.Black;
SolidBrush brush = new SolidBrush(color);
e.Graphics.DrawEllipse(clsPen, X - 25, Y -25, 25, 25);
e.Graphics.FillEllipse(brush, X-25, Y-25, 25, 25);
}
以下是我读过的一些内容: