C# Winform需要顶部和底部PictureBox的冲突

C# Winform需要顶部和底部PictureBox的冲突,c#,winforms,collision,picturebox,C#,Winforms,Collision,Picturebox,我有一个红色的大盒子和一个蓝色的盒子,它们需要相互碰撞,盒子的左右两侧反弹得很好。但是对于顶部和底部的框,我无法找出我需要编写的正确代码,以使其发生冲突。我可以用另一个代码,但它会反弹到它的来源,而不是另一个方向。所以我已经决定了。我只是想知道它是怎么工作的。任何帮助都将不胜感激 编辑:事实证明,由于在Y轴上使用player.Bounds.intersects与第一个计时器冲突,因此我必须使用第二个计时器才能使其工作。我得到了我想要的输出。 int enemyL = -10; int enemy

我有一个红色的大盒子和一个蓝色的盒子,它们需要相互碰撞,盒子的左右两侧反弹得很好。但是对于顶部和底部的框,我无法找出我需要编写的正确代码,以使其发生冲突。我可以用另一个代码,但它会反弹到它的来源,而不是另一个方向。所以我已经决定了。我只是想知道它是怎么工作的。任何帮助都将不胜感激

编辑:事实证明,由于在Y轴上使用player.Bounds.intersects与第一个计时器冲突,因此我必须使用第二个计时器才能使其工作。我得到了我想要的输出。

int enemyL = -10;
int enemyT = 10;
int playerL = 30;
int playerT = -30;

private void mainTimer_Tick(object sender, EventArgs e)
{
    //player.Left += playerL;
    player.Top += playerT;
    //enemy.Left += enemyL;
    enemy.Top += enemyT;

    if (player.Left < 1 || player.Left + player.Width > ClientSize.Width - 2 || (player.Bounds.IntersectsWith(enemy.Bounds)))
    {
        playerL = -playerL;
    }

    if (player.Top < 1 || player.Top + player.Height > ClientSize.Width - 2)
    {
        playerT = -playerT;
    }

    if (enemy.Left < 1 || enemy.Left + enemy.Width > ClientSize.Width - 2 || (enemy.Bounds.IntersectsWith(player.Bounds)))
    {
        enemyL = -enemyL;
    }

    if (enemy.Top < 1 || enemy.Top + enemy.Height > ClientSize.Width - 2)
    {
        enemyT = -enemyT;
    }
int-enemyL=-10;
int-enemyT=10;
int playerL=30;
int-playerT=-30;
私有void mainTimer_Tick(对象发送方,事件参数e)
{
//player.Left+=playerL;
player.Top+=playerT;
//敌人。左+=enemyL;
敌人。Top+=敌人;
如果(player.Left<1 | | | player.Left+player.Width>ClientSize.Width-2 | |(player.Bounds.IntersectsWith(敌方边界)))
{
playerL=-playerL;
}
如果(player.Top<1 | | player.Top+player.Height>ClientSize.Width-2)
{
playerT=-playerT;
}
if(敌方.Left<1 | | |敌方.Left+敌方.Width>ClientSize.Width-2 | | |(敌方.Bounds.IntersectsWith(玩家.Bounds)))
{
enemyL=-enemyL;
}
如果(敌方.Top<1 | |敌方.Top+敌方.Height>ClientSize.Width-2)
{
enemyT=-enemyT;
}

似乎您忘记在“敌方.顶部”的垂直轴上添加条件:“| | | |(敌方.边界.相交(玩家.边界))”。这可以工作,但它不会交替反弹,它只是反弹到它来自的位置。