Способности — это стандартный способ реализации действий игрока с помощью:
Единого интерфейса кнопок, который хорошо работает на мобильных устройствах и ПК.
Перезарядками
Необязательного прицеливания (тап/перетаскивание на мобильных устройствах, прицеливание мышью на ПК)
Способности — это для каждого игрока отдельно. Когда игрок присоединяется, All Out создаёт экземпляр каждого типа способности и сохраняет его в player.abilities.
Быстрый старт (рисование кнопок способностей)
Рисуйте кнопки способностей в Player.ao_late_update, внутри is_local_or_server():
Player::class:Player_Base{ao_late_update::method(dt:float){ifthis->is_local_or_server(){draw_ability_button(this,Shoot_Ability,0);// большая основная кнопкаdraw_ability_button(this,Dodge_Roll,1);// маленькая кнопка}}}
Индексы кнопок отображаются на фиксированные позиции на экране. Индекс 0 — это большая основная кнопка; индексы 1-5 — это маленькие кнопки вокруг неё.
Справочник по API способностей
Создание способности (обычный клик)
Способности с удержанием (активны, пока удерживаются)
Для способностей, которые активны, пока их удерживают (спринт, щит, луч), используйте Ability_Utilities.update_holding_ability чтобы это одинаково работало и на ПК, и на мобильных устройствах.
Способности с прицеливанием (перетаскивание для прицеливания на мобильных устройствах)
Если вам нужно поведение «всегда с прицеливанием» (прицеливание мышью + клик для выстрела на ПК, нажатие-перетаскивание-отпускание на мобильных устройствах), используйте Ability_Utilities.full_update_aimed_ability:
Если вам нужно поведение «клик для входа в режим прицеливания» (на ПК режим прицеливания переключается, правый клик отменяет), используйте Ability_Utilities.full_update_targeted_aimed_ability:
Глобальные ограничения на способности в игре (необязательно)
Реализуйте ao_can_use_ability в вашем Player class, чтобы задать глобальные правила (мертвые игроки не могут использовать способности, отключено во время катсцен и т. д.).
Лучшие практики
Всегда рисуйте кнопки в ao_late_update и проверяйте с помощью is_local_or_server()
Устанавливайте current_cooldown при активации (иначе это можно будет спамить)
Используйте Ability_Utilities вспомогательные функции для удержания/прицеливания, чтобы мобильные устройства и ПК вели себя одинаково
Помещайте глобальные правила в Player.ao_can_use_ability, а не дублируйте их для каждой способности