C# 如何检查标签是否在两个矩形之间移动(但不接触)?
我做了两个面对面的矩形(上下),它们之间的距离被存储成一个整数。我如何编写一个代码来检查某个东西(可移动的标签)是否在不接触任何矩形的情况下通过该距离(它们之间)?我已开始将标签制作成矩形:C# 如何检查标签是否在两个矩形之间移动(但不接触)?,c#,label,rectangles,C#,Label,Rectangles,我做了两个面对面的矩形(上下),它们之间的距离被存储成一个整数。我如何编写一个代码来检查某个东西(可移动的标签)是否在不接触任何矩形的情况下通过该距离(它们之间)?我已开始将标签制作成矩形: Rectangle rec = label2.Bounds; 更新: e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe1[0], 0, PipeWidth, Pipe1[1])); e.Graphics.FillRectang
Rectangle rec = label2.Bounds;
更新:
e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe1[0], 0, PipeWidth, Pipe1[1]));
e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe1[2], Pipe1[3], PipeWidth, this.Height - Pipe1[3]));
e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe2[0], 0, PipeWidth, Pipe2[1]));
e.Graphics.FillRectangle(Brushes.LightCyan, new Rectangle(Pipe2[2], Pipe2[3], PipeWidth, this.Height - Pipe2[3]));
e.Graphics.FillRectangle(Brushes.Green, new Rectangle((Pipe1[0] + Pipe1[1]) / 2, 0, 15, PipeDifferentY));
这是两个面对面的矩形,最后一个我想做一个小矩形来插入这两个矩形之间,我把这些矩形之间的距离存储在那个整数中,那么我如何在两个面对面的矩形之间放置一个新矩形,其高度为它们之间的距离
更新2:
我已经使用矩形相交,但现在我还有一个小问题:
if (intersect1 != Rectangle.Empty | intersect2 != Rectangle.Empty)
{
points++;
}
加上10、20、40等等。我试过:
points += 1;
但它也不起作用,可能是因为标签与矩形重叠了不止一次。我应该如何解决这个问题?我认为我们需要对您的代码有更多的了解,以解决您的积分问题。你每次加满油都要把它归零吗?我假设它是一个整数?当您单步执行代码时,它是执行该行时值的两倍,还是定期重新检查 我想一个更大的问题是,你想用“点”来表示交叉口总共发生了多少次吗?在一系列帧上的次数?我的怀疑是,你从来没有把它归零,但它只是不断累积,可能与你用来检查这个值的线程计时的速度相同 要回答第一个问题,假设您正确地处理了在前两个矩形之间构建第三个矩形的问题,那么您的检查将是三次。假设intersect1是标签边界与顶部矩形的交点,intersect2是标签边界与底部矩形的交点,intersect3是标签与由两个原始矩形的共享宽度创建的矩形的交点(从您的示例中,我不知道它们之间是否有水平偏移)以及它们之间的空间高度,它们位于两个管道之间,但在
时不接触((intersect1==Rectangle.Empty | intersect2==Rectangle.Empty)和&intersect3!=Rectangle.Empty)
。您当前的检查只是增加“点”当标签不与任一管道相交时
而且,就像一个疯狂的猜测,重新创造Flappy Bird?是的,这就是重点=)我无法用另一种方式来判断这只鸟是在两个面对面的矩形之间,所以我想我应该在这两个面对面的矩形之间创建另一个小矩形,当然,是透明的,当鸟撞到它时,告诉我。