Урок 5 SFML. Работа с клавиатурой и мышью

Сделаем перемещение персонажа с помощью клавиатуры.

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


Видеоверсия:

Работа с клавиатурой осуществляется так:

if (Keyboard::isKeyPressed(Keyboard::клавиша)) { какое то действие;}

Я добавил четыре строки в код предыдущего урока и теперь персонаж двигается во все четыре стороны. Нужный код находится именно в бесконечном цикле “пока открыто окно”. Посмотрите комментарии к этим строкам.

В данном случае метод move(x,y) двигает спрайт на указанные координаты. В будущем мы привяжем все эти действия ко времени => глюков или наоборот ускорений, которые вы можете наблюдать при управлении героем сейчас – не будет. Иначе говоря – сейчас мы привязаны к загруженности процессора.

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

Помните в предыдущем уроке мы вырезали главного героя из общей картинки (тайлсета) ? Здесь нам это пригодилось. Мы нажимаем клавишу и вырезаем нужный участок изображения, тем самым делая нашего героя более “живым”.

Аналогичным образом вы можете использовать не только стрелки, но и, например, буквенные клавиши. Ниже, для примера, я переписал код и добавил управление на W,S,A,D:

 

Похожим образом осуществляется работа с мышью. Давайте закрасим героя в красный по нажатию левой клавиши мыши:

Вот на одной картинке мы нажали левую клавишу мыши и герой стал красным:
работа с мышью SFML

 

Здесь мы нажали стрелку вверх и герой повернулся вверх соответственно:

controlhero

 

Более продвинутая работа с мышью (стрелять в место наведения курсора, например) будет потом в одном из уроков.

На следующем уроке мы сделаем привязку к бесконечному циклу времени. А чуть позже – анимацию героя. :)

 

 

 

Буду благодарен, если поделитесь:
SFML вопросы, прошу, задавайте на форуме.

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