2015-12-26 6 views
-3

Я столкнулся с проблемой при работе над моей игровой платформы (еще раз: D), и я не мог действительно нашел решение для этого .. так вот код:обнаруживая ближайший PictureBox

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; 
} 

и Мне нужно определить, какой блок ближе всего к перемещению игрока. Если у вас есть идеи, пожалуйста, дайте мне знать, спасибо!

+2

Что такое игрок, что такое блок и как они могут быть связаны с коробками с картинками? –

ответ

0

Проверьте Phytagorean theorem.

Если у Вас есть две точки (x1, y1) и (x2, y2), то расстояние между этими двумя distance = Math.Sqrt(Math.Pow((x2-x1), 2) + Math.Pow(y2-y1),2))

итерацию по всем блокам, рассчитать их центра позицию (x2, y2) и использование фитагорейские заклинания, чтобы найти расстояние между центральным положением игрока (x1, y1) и каждым блоком (x2n, y2n). Выберите блок с кратчайшим расстоянием.