gpt4 book ai didi

c# - 在图片框、窗体上查找碰撞区域

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:31 25 4
gpt4 key购买 nike

我是 C# 的新手,我正在尝试用 C# 构建一个 Ping Pong 游戏,直到现在我已经能够使用定时器函数在我的窗口窗体面板内实现球的角运动,如下所示:

    System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
System.Windows.Forms.Timer timer2 = new System.Windows.Forms.Timer();

public Form1()
{
InitializeComponent();
radians = (Angle(_start, _end) - 180) * -1;
isFirstTime = true;
timer.Interval = 25;
timer.Tick += Timer_Tick;
timer.Start();
}
private void Timer_Tick(object sender, EventArgs e)
{
middle.X -= Convert.ToInt16(interval * Math.Cos(radians));
middle.Y -= Convert.ToInt16(interval * Math.Sin(radians));
pictureBox2.Location = middle;

//pictureBox1 is the paddle and pictureBox2 is the ball....

if (IsTouching(pictureBox2, pictureBox1)) //Custom method to check whether the two picture boxes touch each other.
{
double relativeLocation = Math.Abs(((double)panel1.Left - (double)pictureBox2.Left) / (double)pictureBox2.Width);
timer.Stop();
timer2.Interval = 25;
timer2.Tick += Timer2_Tick; }
timer2.Start();
}
}
private void Timer2_Tick(object sender, EventArgs e)
{
isFirstTime = false;
middle.X += Convert.ToInt16(interval * Math.Cos(radians));
middle.Y += Convert.ToInt16(interval * Math.Sin(radians));
pictureBox2.Location = middle;
if (pictureBox2.Left < panel1.Left)
{
timer2.Stop();
timer.Start();
}
}

这只是我项目的开始,是的,这段代码中也会有很多问题,但目前我面临的问题是,当球击中 Racket 时,我需要确定是在 Racket 的哪一侧球击中了,在右侧或左侧或可能在中心,据此我必须设置球的角度运动,如果球击中 Racket 的右侧,则为右侧运动,左侧桨的左侧移动,中间部分水平向上移动。

我尝试使用 double relativeLocation = Math.Abs​​(((double)panel1.Left - (double)pictureBox2.Left)/(double)pictureBox2.Width) 方法来确定一些相对位置桨,但我仍然无法实现我想要做的事情。我现在对如何进行感到非常困惑。

简而言之,我必须确定球击中 Racket 时 Racket 的部分,以便为球提供所需的角运动。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

假设球是 pictureBox2左边的桨是 pictureBox1...

在这种情况下,你必须勾选pictureBox1.RightpictureBox2.Left.

代码示例:

if (pictureBox1.Right == pictureBox2.Left)
{
//Collision
}

关于c# - 在图片框、窗体上查找碰撞区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47573442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com