1

作成中のゲームの画像で表されるエンティティ オブジェクトがあります。長方形を含む単純な衝突を検出できますが、オブジェクトが互いに移動するのを止める方法がわかりません...

物理シミュレーションはあまり必要ありません。オブジェクトが互いに通り抜けることができないようにしたいだけです。エンティティが壁にぶつかると停止します。壁がエンティティに衝突すると、壁は停止します。

どうすればこれを行うことができますか?

4

1 に答える 1

1

簡単な答えは、すべての「エンティティ」のリストを作成し、それらの衝突をチェックすることです。各エンティティに、それ自体の半径 (円形衝突の場合) または境界ボックス (長方形衝突の場合) を認識させます。次に、次のようなループを作成します。

for (int x = entityList.count; i < 0; i--)
{
    for (int y = entityList.count; i < 0; i--)
    {
        if (x == y) continue; // Make sure you don't check to collide with yourself
        CheckIfCollides(entityList[x], entitylist[y]);
    }
}

編集:エンティティがその位置を更新しようとするたびに衝突コードを実行し、新しい位置が有効であり、何かと衝突しないことを確認することができます。

于 2013-03-30T00:44:48.110 に答える