我有一个名为Block的对象列表,此Block的位置设置为Vector2。我有一个名为Player的对象,它有一个名为Position2的Vector2,所以我在屏幕上有很多块,我想从对象中获取最近的块。我怎么能这样做?
List<Block> Blocks = new List<Block>();
Player player;
谢谢你们。
答案 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);