Урок 15 SFML скроллинг карты курсором мыши

На этом уроке проскроллим карту курсором мыши. Подводя к краю экрана курсор, будем двигать камеру.

Видеоверсия sfml урок 15 

Итак, чтобы двигать камеру с помощью краёв экрана и курсора (как в стратегиях, например), нам нужно забирать координаты курсора.

В функции int main() , сразу после управления персонажем, объявлю переменную вектор и сложу туда координаты курсора мыши, относительно окна.

Можно посмотреть в консоле какими будут координаты:

Теперь необходимо знать край экрана. Координата левого края по иксу это , конечно ноль. Аналогично верхнему краю экрана – координата игрек тоже ноль. А вот право и низ это размер нашего окна.

Я сделал окно чуть побольше в начале оно выглядит так:

 




Вот эти 1366 нам и надо получить для правого края, и 768 для нижнего края.

Можно просто написать 1366, а можно получить размер окна командой:

“window.getSize().x” или “window.getSize().y”

Теперь после снятия координат курсора (что после управления персонажем), напишу:

почему здесь мелькает цифра три? давайте раберем для второго if :

Спрашивается : “Если координата курсора мыши больше чем размер окна (1366) минус 3, то двигаем камеру вправо. Отнимая минус три в данном случае мы тем самым даём возможность двигать камеру. Поскольку если мы не отнимем, то курсор ведь не уйдёт за пределы окна , если игра будет на весь экран. Аналогично для левого края, только там мы прибавляем 3. Можете прибавлять отнимать другие числа, как вам угодно.

Кстати, в управлении необходимо будет закомментировать строку

а то она будет перебивать вид. как правило в таких играх не требуется следить камерой за персонажем. но если надо, вы легко сможете это реализовать.

Чтобы было удобно пользоваться скроллингом – игру следует сделать на весь экран:

Обращаю ваше внимание на то, что размер окна при развороте на весь экран, – увеличится и станет равным вашему разрешению экрана. Всё будет работать, поскольку мы берем размер окна каждый раз при сравнении.

 

Буду благодарен, если поделитесь:
SFML вопросы, прошу, задавайте на форуме.
  1. Добрый вечер.
    Пытаюсь сделать скроллинг, но выдает следующие ошибки.

    Подскажите пожалуйста идеи, которые помогут их исправить.

    Вложение: 1

  2. Подскажите, как при скролинге не смещаться за предел карты?

    Mouse::getPosition() – только относительно окна (скорей камеры) или десктопа, а относительно реальных координат игры нет привязки.

Добавить комментарий