danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

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

split97 split97

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

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Программирование

Клавиатура,мышь и джойстик в SFML

Оригинал статьи - официальный туториал Автор перевода - Nerevar

Клавиатура,мышь и джойстик в SFML

Введение ===

В этой статье описывается то,как вы можете получить доступ к устройствам ввода пользователя : клавиатуре, мыши и джойстику. Не следует путать с обработкой событий. Описываемым способом мы будем запрашивать состояния клавиатуры, мыши и джойстика в реальном времени ("эта кнопка сейчас нажата?", "где сейчас находится курсор мыши?"), в то время, как события оповещают вас только тогда, когда что-то случается ("кнопка была нажата", "курсор мыши был передвинут").

Клавиатура ===

Этот класс предоставляет доступ к состоянию клавиатуры - sf::Keyboard. Он содержит только одну функцию - isKeyPressed, которая проверяет текущее состояние клавиши (нажата или отпущена). Это статическая функция и вам не требуется создавать экземпляр класса sf::Keyboard для её использования.

Эта функция напрямую читает состояние клавиатуры, игнорируя тот факт, является ли окно активным. Это значит, что функция isKeyPressed может вернуть истину, даже если окно не является активным.

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
    // левая стрелка нажата - двигаем нашего персонажа
    character.move(1, 0);
}

Коды клавиш определены в sf::Keyboard::Key.

В зависимости от вашей операционной системы и раскладки клавиатуры, некоторые коды клавиш могут быть неправильно прочитаны. Это то, что будет исправлено в будущей версии SFML.

Мышь ===

Этот класс предоставляет доступ к состоянию мыши - sf::Mouse. Подобно sf::Keyboard, sf::Mouse содержит только статические функции и обрабатывает только одну мышь одновременно.

Вы можете проверить, нажаты ли кнопки:

if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
    // левая кнопка мыши нажата, стреляем!
    gun.fire();
}

Коды кнопок мыши определены в sf::Mouse::Button. SFML поддерживает 5 кнопок : левую, правую, среднюю (колесико), и две дополнительные кнопки, какими бы они ни были.

Вы также можете узнать и изменить текущее положение курсора мыши, относительно рабочего стола или окна:

// получаем глобальную позицию курсора мыши (относительно рабочего стола)
sf::Vector2i globalPosition = sf::Mouse::getPosition();

// получаем локальную позицию курсора мыши (относительно окна)
sf::Vector2i localPosition = sf::Mouse::getPosition(window); // window - это sf::Window

// устанавливаем глобальную позицию курсора мыши (относительно рабочего стола)
sf::Mouse::setPosition(sf::Vector2i(10, 50));

// устанавливаем локальную позицию курсора мыши (относительно окна)
sf::Mouse::setPosition(sf::Vector2i(10, 50), window); // window - это sf::Window

Функция чтения текущего состояния колесика мыши отсутствует. Так как колесико может быть прокручено, оно не имеет исходного состояния, которое можно было бы запросить. Смотря на клавишу, вы можете сказать, нажата она или отпущена. Смотря на курсор мыши вы можете сказать, где на экране она находится. При этом, смотря на колесико мыши, вы не сможете сказать, в каком положении оно находится. Вы только можете заметить, как оно движется с помощью события MouseWheelMoved.

Джойстик ===

Этот класс предоставляет доступ к состоянию джойстиков - sf::Joystick. Подобно другим классам в этой статье, он содержит только статичные функции.

Джойстики идентифицируются с помощью их индексов (от 0 до 7, так как SFML поддерживает до 8 джойстиков включительно). Таким образом, первым аргументом любой функции sf::Joystick будет индекс джойстика, состояние которого вы хотите запросить.

Вы даже можете проверить, подсоединен ли джойстик:

if (sf::Joystick::isConnected(0))
{
    // джойстик номер 0 подсоединен
    ...
}

Вы также можете проверить возможности подсоединенных джойстиков:

// проверяем, как много джойстик номер 0 имеет кнопок
unsigned int buttonCount = sf::Joystick::getButtonCount(0);

// проверяем, имеет ли джойстик номер 0 ось Z
bool hasZ = sf::Joystick::hasAxis(0, sf::Joystick::Z);

Оси джойстика определены в sf::Joystick::Axis. Так как кнопки не несут определенного назначения, они просто пронумерованы от 0 до 31.

В конце концов, вы даже можете проверить состояние кнопок и осей джойстика:

// нажата ли кнопка 1 на джойстике номер 0?
if (sf::Joystick::isButtonPressed(0, 1))
{
    // кнопка нажата - стреляем!
    gun.fire();
}

// какая позиция осей X и Y на джойстике номер 0?
float x = sf::Joystick::getAxisPosition(0, sf::Joystick::X);
float y = sf::Joystick::getAxisPosition(0, sf::Joystick::Y);
character.move(x, y);

Состояния джойстика автоматически обновляются, когда вы проверяете события. Если вы не проверяете события и хотите проверить состояние джойстика (например, проверить, какие джойстики подсоединены) до начала игрового цикла, вы должны вручную вызвать функцию sf::Joystick::update(), чтобы быть уверенным, что состояния джойстиков не ошибочны.

Смотрите также:


Комментарии



Судя по данному туториалу, sfml очень удобная библиотека. Есть ли опыт написания на ней и вправду ли там все так красиво выглядит?

alexprey:

sfml очень удобная библиотека

yes

Есть ли опыт написания на ней и вправду ли там все так красиво выглядит?

да, там все так красиво, как выглядит, я не просто так на ней остановился

Nerevar, еще было бы интересно посмотреть на работу с графикой, там такое есть или просто создаешь окошко и потом на нативном OpenGl или DX пишешь?

там можно как напрямую с графическими библиотеками работать, так и с встроенными базовыми возможностями для 2д графики - спрайтами и буферами вершин, про спрайты будет сразу после работы с оглом переведено

Поотрывал бы руки разработчикам библиотеки за "joystick")))

Справка