Корректировка (выход героя за пределы карты при одной картинке)

SFML и C++ Уроки \ Разработка игр Форумы SFML System, Window и другие вопросы Корректировка (выход героя за пределы карты при одной картинке)

В этой теме 5 ответов, 2 участника, последнее обновление  Sanya 3 года/лет, 9 мес. назад.

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #1808

    Sanya
    Участник
    Сообщений:8

    Зарегистрирован:
    09.10.2015

    Репутация:0

    Ребят, помогите!!!Не работает запрет на движение влево и вверх. Сама картинка(карта) одна цельная 500х500. И хочу сделать, чтоб герой не выходил за пределы окна-картинки:
    for (int i = y / 485; i < (y + h) / 485; i++)
    for (int j = x / 485; j<(x + w) / 485; j++){
    if (TileMap[i][j] ==! ‘0’)
    {
    if (dy>0)
    {
    y = i * 485 – h;
    }
    if (dy<0)
    {
    y = i * 485 + 485;
    }
    if (dx>0)
    {
    x = j * 485 – w;
    }
    if (dx < 0)
    {
    x = j * 485 + 485;
    }
    }

    }
    }

    #1809
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:587

    Зарегистрирован:
    04.01.2015

    Репутация:104

    для вставки кода используй кнопку “вставить код” )

    а почему такие тайлы огромные? а размер карты какой? не глючит от таких огромных тайлов? их ведь наверняка много..

    это проверка на стену? должно же быть ==’0′ тогда, разве нет?

     

    #1810

    Sanya
    Участник
    Сообщений:8

    Зарегистрирован:
    09.10.2015

    Репутация:0

    Всего тайл один, ну тоесть как одна целая картинка-фон.(Ибо не знаю, как еще поставить фон)
    А проверка с “!” т.к если тайл(фон) заканчивается, то человечек упирается, ибо это уже будет конец окна. Просто учусь по урокам, и не нашла , где написано про один общий фон, не состоящий из множества спрайтов)

    #1811
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:587

    Зарегистрирован:
    04.01.2015

    Репутация:104

    а ты сделай символ ‘0’ концом карты, оберни это всё как в уроке и можешь посередине единый фон сделать – один спрайт, а по бокам можно и не грузить спрайты. суть в том, что тогда тебе подойдёт проверка из уроков , и тайлы эти сделай 32*32.

    то есть у тебя будет прямоугольник , состоящий из бордюра карты (символы ‘0’), а центр карты – твоя большая картинка.

    ну или можно просто сделать проверку на координаты – если x<0 , то это конец карты, надо дать скорость ноль при ходьбе влево, чтобы дальше не зашёл, если y<0, то скорость 0 при ходьбе вверх. для определения нижней и верхней границ карты – считай подбором или по размеру картинки, тайлов.

    #1812
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:587

    Зарегистрирован:
    04.01.2015

    Репутация:104

    и ещё – если картинка одна и помещается полностью в окно, то проверку на выход за пределы окна можно сделать как проверку условия if (player.x>window.getSize()x) && (и при этом игрок идёт вправо){player.speed=0;}

    что то типа того. это более логичное решение, не нужно городить массив и тд

    #1813

    Sanya
    Участник
    Сообщений:8

    Зарегистрирован:
    09.10.2015

    Репутация:0

    Ой, спасибо огромное) Все заработало!!)

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)

Для ответа в этой теме необходимо авторизоваться.