检测最近的图片框

时间:2015-12-26 16:04:55

标签: c# winapp

我在平台游戏上遇到了一个问题(再一次:D),我无法真正找到解决方案。 所以这是代码:

Blocks.AddRange(this.Controls.OfType<PictureBox>());
if (Blocks.Any(x => x.Location.Y - Player.Height <= Player.Location.Y))
{
    Player.Top = Height - ClosestBlock.Location.Y - Player.Height;
}

我需要检测哪个Block最接近移动玩家。如果您有任何想法,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:0)

查看Phytagorean theorem

如果你有两个点(x1,y1)和(x2,y2),那么两者之间的距离为distance = Math.Sqrt(Math.Pow((x2-x1), 2) + Math.Pow(y2-y1),2))

迭代所有块,计算它们的中心位置(x2,y2)并使用Phytagorean理论来找到玩家中心位置(x1,y1)和每个块(x2n,y2n)之间的距离。选择距离最短的区块。