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