XNA获取对象与对象列表之间的最近距离

时间:2014-02-19 01:00:36

标签: c# xna position

我有一个名为Block的对象列表,此Block的位置设置为Vector2。我有一个名为Player的对象,它有一个名为Position2的Vector2,所以我在屏幕上有很多块,我想从对象中获取最近的块。我怎么能这样做?

 List<Block> Blocks = new List<Block>();
 Player player;

谢谢你们。

1 个答案:

答案 0 :(得分:0)

我认为您可以对此进行更多研究,但您可以尝试使用Linq来获得最接近的区块。伪代码:

Block closestblock = Blocks.OrderBy<Block, float>
    (i => Vector3.Distance(i.Position, player.Position)).ToList<Block>()[0];

这将按照距离玩家的距离对阻止列表进行排序,然后选择最近的区块。

根据您的上一条评论,这是另一种做您正在尝试的方法。您必须在播放器和每个块周围创建一个矩形。在您的更新方法中:

for (int i = 0; i < Blocks.Count; i++)
    if (PlayerRect.Intersects(Blocks[i].Rect)) Blocks.RemoveAt(i);

请参阅herehere。 HTH