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

要确定两个敌人是否发生碰撞,您需要找到每个敌人所在的 Rectangle。然后你可以用它Rectangle.Intersects(Rectangle)来找出它们是否重叠。

回复:编辑:

每个敌人总是在检查是否与自己发生碰撞。不是你想要的:(|)

像这样的东西是你想要的:

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 回答