0

条件との交差または衝突検出について質問があります。バー(画像)とボール(画像)の間の衝突検出を行っています。バーをドラッグする際のユーザーの応答に応じて、バーを上下に移動できます。衝突判定コードは以下の通りです。

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

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

プライベート 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;
        }

バーの画像は以下の通り。

4

1 に答える 1

1

赤いバーを記述するには、2 つの境界ボックスを使用する必要があるようです。1 つは上部に、もう 1 つは下部です。次に、コードで青いボールがいずれかのボールと交差するかどうかを確認できます。この場合、ボールが 2 つのバリアの間に収まる場合、ボールはどちらとも交差せず、ボールは陽気に前方に進みます (プレーヤーはおそらく死亡します)。

ちなみに、スニペット:

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

単純に置き換えることができます:

return !barRectangle.IsEmpty;
于 2013-07-16T03:18:27.317 に答える