Foreach语句不包含getEnumerator的公共定义

时间:2015-04-27 00:56:16

标签: c# collision monogame enumerator

我正在尝试实现两个拨片之间的冲突,我收到了GetEnumerator错误。

这是我收到错误的地方:

foreach (Player item in paddle1)
{
    item.Update(gameTime);
    if (paddle2.CollisionSprite(item))
    {
        paddle2.Velocity = -paddle2.Velocity;
    }
}

我的玩家碰撞方法:

public virtual Circle CollisionCircle
{
    get
    {
        return new Circle((int)(Position.X - SpriteOrigin.X * Scale), (int)(Position.Y - SpriteOrigin.Y * Scale),
                (int)(TextureImage.Width * Scale), (int)(TextureImage.Height * Scale));
    }
}

public bool CollisionSprite(Player sprite)
{
    return CollisionCircle.Intersects(sprite.CollisionCircle);
}

1 个答案:

答案 0 :(得分:1)

错误是因为paddle1是Player类型,而不是IEnumerable。如果你只有两个玩家,你就不应该循环,只能实现你的功能:

public void CollisionDetection(Player firstPlayer, Player secondPlayer)
{
    firstPlayer.Update(gameTime);
    secondPlayer.Update(gameTime);

    if (firstPlayer.CollisionSprite(secondPlayer))
    {
        firstPlayer.Velocity = -firstPlayer.Velocity;
        secondPlayer.Velocity = -secondPlayer.Velocity;
    }
}

用法是:

CollisionDetection(paddle1, paddle2);