我正在尝试实现两个拨片之间的冲突,我收到了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);
}
答案 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);