Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / [SFML] Взаемодействие с объектами на карте

[SFML] Взаемодействие с объектами на карте

Поделиться
Azazel-SanПользовательwww10 сен. 201721:39#0
Собственно имею изометрическую карту, на ней позначил объекты в Tile Map Editor. Затем пытаюсь их считать, типо так:
for (int i = 0; i < obj.size(); i++)
{

  if (getRect().intersects(obj[i].rect))
  {
    if (obj[i].name == "solid")
    {
      cout << "solid" << endl;

    }
    if (obj[i].name == "grass")
    {
      cout << "grass" << endl;
    }
  }
}
Но когда персонажем я забегаю в область объекта ничего не происходит, а если персонажа сразу помещать sprite.setPosition в зону объекта “grass” или “solid”, то он его определяет, но как бы самого столкновения не просиходит и тогда вообще куда бы я не побежал везде будет объект “grass” или “solid”. Что я сделал не так?
+ Показать

Мой код.
SuslikМодераторwww11 сен. 20179:27#1
Azazel-San
> Что я сделал не так?
задал вопрос прежде, чем пытаться самому отлаживать, очевидно. ставишь брейкпойнт в свой цикл, пробегаешь, смотришь, почему условия не выполняются.
IgorBgzПостоялецwww12 сен. 201715:15#2
Пропустил условия "тогда":
for (int i = 0; i < obj.size(); i++)
{

  if (getRect().intersects(obj[i].rect))
  {
    if (obj[i].name == "solid")
    {
      cout << "solid" << endl;

    } else
    if (obj[i].name == "grass")
    {
      cout << "grass" << endl;
    }
  }
}
Azazel-SanПользовательwww12 сен. 201720:59#3
IgorBgz
> "тогда"
не тогда, а "если", и дело было не в этом, а в том что я не изменял координаты своего героя, сейчас оно выводит, но энивей зоны слоев объектов не совпадают с теми что я набросал в Tiled Map Editor'e.
+ Показать
CasDevПостоялецwww12 сен. 201722:01#4
Судя по коду, сперва не помешало бы азы подучить. Например.

Ну а по теме - что мешает вывести getRect вначале цикла и rect у проверяемых объектов? При пересечении выводишь координаты пересекаемого объекта и смотришь, что у тебя определено неправильно.
Но от кода реально глаза вытекают. Ей-богу. Тут надо еще читать и читать книги по архитектуре приложения. И смотреть чужой код.

Правка: 12 сен. 2017 22:01

jaguardУчастникwww12 сен. 201723:52#5
Azazel-San

А чего не в юнити пишешь? Там есть ассет "что я сделал не так?", всего $9.99.

Azazel-SanПользовательwww13 сен. 201717:26#6
Дело в том что моя область объектов, изображается у меня как обычный ортогональный прямоугольник, смотрите ниже
+ Показать

А мне его получается надо наклонить к моей карте (как на фотке в шапке) и тут я уже не знаю что делать.. Известна тольковерхняя лева точка, ширина и высота

Правка: 13 сен. 2017 17:45

CasDevПостоялецwww13 сен. 201722:51#7
Так учиться надо. Первое время в основном книги читать, брать чужой код, разбирать его по полочкам, пробовать повторять.
SFML можешь положить на полку - это гуано подходит для баловства студентов, не более того.

Учи C# и осваивай Unity, но сперва - книгу Шилдта и ту ссылочку, что я привел выше. Как поймешь, как организуется логика в игре - бери код чужой игры и смотри, что там, как и почему сделано.

/ Форум / Программирование игр / 2D графика и изометрия

2001—2017 © GameDev.ru — Разработка игр