Вопрос про несколько background'ов
  • DovakiinDovakiin May 2012
    Доброго времени суток. Это мой первый пост на этом форуме,так что если что-то не понятно изложено - не удивляйтесь :) Пытался сформулировать как можно понятней.
    Тут у меня возникла пара вопросов.
    1. Допустим, есть несколько слоёв общей картинки в игре-платформере: статический задний план ,динамический задний план,динамический слой земли (перекрывающий ноги игрока),игрок и слой освещения.
    Можно ли рендерить отдельные спрайты-слои на одном и том же месте,в то же время двигая другие при передвижении персонажа? То есть статические слои освещения и заднего плана должны не двигаться при перемещении камеры. Или же их надо двигать вместе с камерой?
    2. Какой в этом случае более удобный способ двигать камеру? Через hge->SetTransform или bgspr->RenderEx(-CamPosX,CamPosY,0,1.5f,1.0f) ?
  • kvakvskvakvs May 2012
    1. Как ты двигаешь слои зависит от их удаления от камеры. Персонаж обычно на одном месте, и сдвигается или нет при подпрыгивании персонаж из центра экрана ты решаешь сам. Близкие слои сдвигаются быстро. Средние слои сдвигаются чуть медленнее. Небо с облаками совсем медленно или при желании пусть стоят на месте.

    Разберись что такое мировые и локальные экранные координаты. При рендере будешь использовать перевод из мировых в экранные вычитая (х, у) камеры.

    2. Для случая с 2-мерным миром трансформ не нужен совсем. Камера представляется парой координат (х, у). Вычисляешь прямоугольник мира который видно в камеру, и рендеришь их мировые координаты минус координаты камеры. Также вычисляешь список объектов, которые попадают в камеру полностью или частично, и рендеришь их мировые координаты минус (х, у) камеры.

    P.S. Можешь ещё посмотреть мой проект-пример платформера https://github.com/kvakvs/hge_skel файл World.cpp функцию Render https://github.com/kvakvs/hge_skel/blob/master/src/world.cpp здесь как раз делается всё о чём я говорил и рисуется видимое в данный момент окошко мира.
  • DovakiinDovakiin May 2012
    спасибо за содержательный ответ!)
    ещё один вопрос по теме: можно ли делать эффект "тряски" камеры? если да,то это уже, как я понимаю, надо через трансформ делать?
  • kvakvskvakvs May 2012
    Да вот для тряски вполне подходит, только вероятно надо будет расширить границы отрисовки окна уровня на 1 клетку во все стороны. Чтоб тряска не открыла пустоту.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In Apply for Membership

In this Discussion

Tagged

Who's Online (2)