Обмен технологиями

79. Время восстановления и потребление навыка создания RPG UE5.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

В этой статье мы продолжаем оптимизировать навыки, и теперь добавленные персонажу активные навыки можно синхронизировать с пользовательским интерфейсом. В этой статье мы улучшим потребление навыков (отпуск навыков для уменьшения маны) и механизм охлаждения.
Мы видим, что в значении класса навыка по умолчанию можно установить его охлаждение и потребляемые GE.
Вставьте сюда описание изображения
Поэтому далее мы будем использовать GE для настройки охлаждения и потребления навыков.

Добавлен расход умений GE.

Сначала мы создаем план, и выбранный родительский класс — Gameplay Effect.
Вставьте сюда описание изображения
Назовите его GE_Cost_FireBolt, что означает стоимость огненного шара.
Вставьте сюда описание изображения
Чтобы использовать нашу продолжительность, выберите «Мгновенно».
Вставьте сюда описание изображения
Затем мы добавляем модификаторы, позволяющие уменьшить количество маны персонажа, уменьшая его на 20 каждый раз, когда используется навык.
Вставьте сюда описание изображения
Создается простой ГЭ потребления, и мы применяем его к навыкам.
Вставьте сюда описание изображения
Далее нам нужно вызвать узел Commitability в навыке. Этот узел будет вычитать ману, необходимую для умения. Если есть время восстановления, умение войдет в время восстановления.
Вставьте сюда описание изображения
Commitability — это единый узел для вычета маны и охлаждения. Конечно, вы также можете разделить его и иметь отдельные узлы для вычета потребления и охлаждения.
Вставьте сюда описание изображения

Запустить тестовый эффект
Вставьте сюда описание изображения

Анализируйте возможности фиксации

Сначала определяем, будет ли активирован навык, если маны недостаточно. Перед обработкой расхода распечатываем данные.
Вставьте сюда описание изображения
Если количества маны достаточно, его можно успешно распечатать, но если количество маны не может поддержать высвобождение навыка, оно не будет напечатано, что доказывает, что если ресурсов недостаточно, навык не будет введен, и он не оценивается по способности фиксации, которая используется только для узла потребления.
Вставьте сюда описание изображения
Мы смотрим на исходный код и вызываемый им код — K2_CommitAbility.
Вставьте сюда описание изображения
CommitAbility вызывается внутри для реализации логики, а затем проверяется, достаточно ли потребления для предоставления навыков, и вызывается функция для отчисления ресурсов.
Вставьте сюда описание изображения
CommExecute — это функция удержания ресурсов, которая внутренне вызывает удержание ресурсов и охлаждение.
Вставьте сюда описание изображения
Взгляните на «Применить перезарядку», которая учитывает уровень навыка и применяет GE к ASC.
Вставьте сюда описание изображения
Таким же образом расходуются ресурсы приложения, а также получаются уровни навыков.
Вставьте сюда описание изображения

Установите уровни навыков для потребления разного количества маны.

Теперь мы знаем, что использование потребления навыков может изменить количество потребляемой маны в зависимости от уровня навыка. Мы можем использовать таблицу для определения различных уровней и потребления маны.
Поэтому мы создаем новую таблицу кривых, чтобы установить потребление маны навыками на разных уровнях.
Создайте таблицу кривых, выберите в качестве типа «Константа» и установите фиксированное значение потребления маны на каждом уровне.
Вставьте сюда описание изображения
Именованный CT_Cost
Вставьте сюда описание изображения
Внутренне добавьте потребление маны навыком с уровня 1 до уровня 10 Огненного шара.
Вставьте сюда описание изображения
Затем используйте таблицу кривых здесь, в GE, выберите созданную строку и установите значение -1.
Вставьте сюда описание изображения
Затем измените начальный уровень навыков в коде для тестирования.
Вставьте сюда описание изображения
После отпускания навыка количество маны в три раза больше, чем раньше, что доказывает отсутствие проблем с настройками.
Вставьте сюда описание изображения

Добавлено время восстановления навыка.

Принцип охлаждения навыка заключается в применении охлаждающей метки к ASC во время фазы охлаждения. Этот навык нельзя использовать снова, пока существует охлаждающая метка.
Итак, мы хотим реализовать охлаждение, сначала создайте метку для охлаждения.

FGameplayTag Cooldown_Fire_FireBolt; //火球术冷却标签
  • 1

Тогда зарегистрируйтесь в менеджере тегов

	GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
		.AddNativeGameplayTag(
			FName("Cooldown.Fire.FireBolt"),
			FString("火球术冷却标签")
			);
  • 1
  • 2
  • 3
  • 4
  • 5

Создает огненный шар, охлаждающий GE.
Вставьте сюда описание изображения
Измените GE на чувствительный ко времени параметр Has Duration.
Вставьте сюда описание изображения
Как вы можете видеть здесь, время охлаждения можно установить с помощью различных методов, которые мы использовали для изменения значения ранее. Здесь мы используем самый простой из них, напрямую устанавливая его на 1 с.
Вставьте сюда описание изображения
Нам не нужно здесь изменять контент, связанный с персонажем. Нам нужно только добавить охлаждающий тег к ASC, когда этот GE вступит в силу. Мы добавляем компонент «Целевые теги» с эффектом игрового процесса.
Вставьте сюда описание изображения
Добавьте охлаждающую метку к Актеру через этот компонент и добавьте созданную нами охлаждающую метку.
Вставьте сюда описание изображения
Затем примените время восстановления навыка
Вставьте сюда описание изображения
Запустив тест, мы обнаружили, что можем активировать навык только один раз в секунду.

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

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