Как правильно реализовать проверку соприкосновения координат у PictureBox'ов?

В чем суть: Есть подвижный объект(character) и объект, который он может "поглотить"(bullet). Чтобы это произошло необходимо чтобы они совпадали по координатам, то бишь один объект находился на другом.
Проблема: Координаты это одиночная точка в левом верхнем углу объекта, которая не зависит от его размера и других характеристик. И чтобы координаты соприкоснулись к друг-другу - человеку, который управляет персонажем необходимо потратить over9999 часов на это.
Потратил около часа-двух на попытку исправить это, но ничего не вышло, к сожалению.
Код:
private void eatBullet()
        {
            if (character.Location == bullet.Location)
            {
                _characterSizeX += 5;
                _characterSizeY += 5;
            }
        }
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
ayazer
@ayazer
Sr. Software Engineer
судя по тегу winforms - у ваших объектов уже есть координата вверхнего правого угла + размеры (т.е. высота и ширина). По сути - вам надо проверить не что совпадают 2 координаты, а что 2 прямоугольника (вокруг персонажа и вокруг пули) пересекаются.

как вариант, можете взять https://github.com/MonoGame/MonoGame/blob/7b2d69d6... и подправить под себя. единственно различие - у вас вместо Rectangle будет какой-то PictureBox (честно, лет 10 не трогал винформс, не помню как оно называется там)

UPD:
public bool bulletBorderCheck(){

   return bullet.Location.X < character.Location.X + character.Width
      && character.Location.X < bullet.Location.X + bullet.Width
      && bullet.Location.Y < character.Location.Y < character.Height
      && character.Location.Y < bullet.Location.Y + bullet.Height

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы