如何在C#中与条件交集?

时间:2013-07-16 03:15:24

标签: c# windows-phone-7 collision-detection conditional-statements intersection

我有一个关于交叉或相当碰撞检测与条件的问题。我正在进行条形图像(图像)和球形图像(图像)之间的碰撞检测。根据用户在拖动栏时的响应,可以上下移动条形图。碰撞检测代码如下。

public bool Intersects(Rect barRectangle, Rect blueBallRectangle)
    {
        barRectangle.Intersect(blueBallRectangle);

        if (barRectangle.IsEmpty)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

在private void OnUpdate(对象发送者,对象e)

Rect blueBallRectangle= new Rect(blueBallPositionX, blueBallPositionY, blueBall.ActualWidth, blueBall.ActualHeight);
Rect barRectangle= new Rect(barPositionX, barPositionY, bar.ActualWidth, bar.ActualHeight);

目前,当球检测到碰撞时,它会偏转。但是,我想补充说它会通过差距而不是偏离。

if (Intersects(barRectangle, blueBallRectangle))
        {
            this.blueBallVelocityY *= -1;
            this.blueBallVelocityX *= -1;
        }

酒吧的图片如下。

1 个答案:

答案 0 :(得分:1)

似乎你应该使用两个边界框来描述红色条:一个在顶部,一个在底部。然后你的代码可以检查蓝色球是否与 相交。在这种情况下,如果球适合两个障碍物,它将不会与任何一个障碍物相交,并且球将继续快速前进(因此玩家可能会死亡)。

顺便提一下,摘录:

if (barRectangle.IsEmpty)
{
    return false;
}
else
{
    return true;
}

可以简单地替换为:

return !barRectangle.IsEmpty;