Способности — стандартный способ реализации действий игрока с помощью:
Единообразного UI кнопок, который хорошо работает на мобильных устройствах и ПК.
Временами восстановления
Необязательного прицеливания (тап/перетаскивание на мобильных, прицел мышью на ПК)
Способности являются для каждого игрока. Когда игрок присоединяется, 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 классе, чтобы применять глобальные правила (мертвые игроки не могут использовать способности, отключено во время катсцен и т.д.).
Лучшие практики
Всегда отрисовывайте кнопки в ao_late_update и защищайте вызов с помощью is_local_or_server()
Установите current_cooldown когда вы активируете (иначе это можно будет спамить)
Используйте Ability_Utilities утилиты для удержания/прицеливания, чтобы мобильные устройства и ПК вели себя одинаково
Разместите глобальные правила в Player.ao_can_use_ability, а не дублируйте для каждой способности