0

XNA で同じタイプの敵の衝突を検出する必要があります。
衝突が検出された場合、敵が向きを変えて反対方向に歩くようにしました。

すべてのインスタンスをリストに保存した場合、異なる (しかし同じ) タイプの敵が衝突したかどうかを検出するにはどうすればよいですか?

これは C# XNA にあります。

編集:「敵」と呼ばれるクラスに敵がいます。ゲーム内のすべての敵はこのクラスから作成されます。敵が衝突したかどうかを確認できるようにする必要があります。

編集2:

コードサンプルは次のとおりです。

    // Fields.        
    private List<Enemy> enemies = new List<Enemy>();

    // Add our enemies when we need to.
    enemies.Add(new Enemy(this, position, spriteSet));

    // Here is it's update method.
    private void UpdateEnemies(GameTime gameTime)
    {
        foreach (Enemy enemy in enemies)
        {
            enemy.Update(gameTime);

            // This code works because it's comparing the player.
            if (enemy.BoundingRectangle.Intersects(Player.BoundingRectangle))
            {
                OnPlayerKilled(enemy);
            }
            // This code is always ture because enemy is enemy I can't figure out how to solve this.
                            if (enemy.BoundingRectangle.Intersects(enemy.BoundingRectangle))
            {
                // Make enemies turn... This if statement is the problem.
            }
        }
4

1 に答える 1

2

2 つの敵が衝突したかどうかを判断するには、それぞれが占めている Rectangle を見つける必要があります。次にRectangle.Intersects(Rectangle)、それらが重複しているかどうかを調べるために使用できます。

Re: 編集:

すべての敵は常に自身との衝突をチェックしています。あなたが望むものではありません:(|)

このようなものがあなたが望むものです:

foreach (Enemy enemy1 in enemies)
{
    foreach (Enemy enemy2 in enemies)
    {
        if (enemy1 != enemy2 && enemy1.BoundingRectangle.Intersects(enemy2.BoundingRectangle))
        {
            // enemy1 is colliding!
        }
    }
}
于 2012-04-21T13:40:37.737 に答える