взаимодействие с картой. Pacman

В этой теме 3 ответа, 2 участника, последнее обновление Павел Букреев Павел Букреев 8 года/лет, 11 мес. назад.

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

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

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

    Репутация:0

    как написать цикл, чтоб персонажа ограничивали стенки не только по краям, но и в середине, я так понял в уроках именно для крайних стенок делалось

    размер спрайта персонажа равен размеру спрайта карты, это как-то влияет?

     
    for (int i = y / 15; i < (y + h) / 15; i++)//проходимся по всей карте, то есть по всем квадратикам размера 32*32, которые мы окрашивали в 9 уроке. про условия читайте ниже.
    for (int j = x / 15; j<(x + w) / 15; j++)//икс делим на 32, тем самым получаем левый квадратик, с которым персонаж соприкасается. (он ведь больше размера 32*32, поэтому может одновременно стоять на нескольких квадратах). А j<(x + w) / 32 – условие ограничения координат по иксу. то есть координата самого правого квадрата, который соприкасается с персонажем. таким образом идем в цикле слева направо по иксу, проходя по от левого квадрата (соприкасающегося с героем), до правого квадрата (соприкасающегося с героем)
    {
    if (TileMap[i][j] == ‘1’)
    {
    if (dy>0)//если мы шли вниз,
    {
    y = i * 15 – w;//то стопорим координату игрек персонажа. сначала получаем координату нашего квадратика на карте(стены) и затем вычитаем из высоты спрайта персонажа.

    }

    if (dy<0)
    {
    y = i * 15 + 15;//аналогично с ходьбой вверх. dy<0, значит мы идем вверх (вспоминаем координаты паинта)

    }
    if (dx>0)
    {
    x = j * 15 – h;//если идем вправо, то координата Х равна стена (символ 0) минус ширина персонажа

    }
    if (dx < 0)
    {
    x = j * 15 + 15;//аналогично идем влево

    }
    }
     `

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

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

    Репутация:106

    Для кода есть специальная кнопка.
    Код из урока не только для крайних стенок. Он в целом для любых символов “0”. Мы можем нарисовать эти символы и посередине.

    #780

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

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

    Репутация:0

    Да, я это уже понял, но персонаж не пролазит, я сделал проход шыре, но все равно как-то коряво получается, нужно очень точно попадать между стенками, чтоб он прошел, можно что-нибудь с этим сделать?

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

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

    Репутация:106

    Может размер прямоугольника персонажа больше, чем ты видишь на экране?

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

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