我在开发平台游戏时遇到了一个问题(再一次: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;
}
我需要检测哪个区块最接近移动玩家。如果你有任何想法,请告诉我,谢谢!
查看Phytagorean定理。
如果有两个点(x1,y1)和(x2,y2),则这两个点之间的距离为distance = Math.Sqrt(Math.Pow((x2-x1), 2) + Math.Pow(y2-y1),2))
遍历所有区块,计算它们的中心位置(x2,y2),并使用Phytagorean理论来找到玩家中心位置(x1,y1)和每个区块(x2n,y2n)之间的距离。选择距离最短的块。