ПОЛНЫЙ ГАЙД по Enhanced Input | Уроки Unreal Engine 5

Поділитися
Вставка
  • Опубліковано 4 січ 2025

КОМЕНТАРІ • 32

  • @makeyourgame2210
    @makeyourgame2210  10 місяців тому +1

    Чтобы попасть в ламповый закрытый Telegram чат, где мы помогаем друг другу в изучении Unreal Engine, 3D и обсуждаем игры, то вам нужно пройти по ссылке boosty.to/makeyourgame и осуществить донат на любую комфортную сумму и написать мне, что хотите в чат, а я вам в течение 24 часов пришлю ссылку.
    ВАЖНО: Убедитесь, что на boosty у вас открыты сообщения.
    Присоединяйся к единомышленникам! Доступ - навсегда!
    =================================
    Группа в ВКонтакте: vk.com/makeyourgameunreal
    =================================
    Подписка на канал - только приветствуется!
    =================================
    #games #unreal #unrealengine

  • @merlin3617
    @merlin3617 10 місяців тому +6

    Спасибо, прям глоток понятной информации среди индусов и англ. документаций

  • @WestsiderzRU
    @WestsiderzRU 10 місяців тому +2

    Это ОНОО! Спасибо за такие видео! Они прям жизненно необходимы 😃

  • @wi1dd0g_games
    @wi1dd0g_games 10 місяців тому +2

    О. прям видео появились тогда, когда я решил тоже поизучать Enhanced Input. Огромное спасибо!

  • @dimanshulgin
    @dimanshulgin 10 місяців тому +6

    14:10 Чем хороша практика и Trigger и Start? Кто тебе эту чушь сказал? Сам придумал, поэтому хорошая
    Есть TriggerState - входные значения в ответах триггера UpdateState и Есть TriggerEvent - это интерпретация Действия всех переходов между триггерными состояниями, которые произошли для действия за последний такт.
    TriggerState содержит состояние None, Ongoing и Triggered
    None и в Африке нонэ;
    Triggered - триггер сработал
    Ongoing - триггер не сработал (пока не сработал), не достиг порогового элемента, если какому либо действию требуется время
    TriggerEvent
    Started - переключение состояния (None -> Ongoing, None -> Triggered) у TriggerState (начинаем что-то нажимать кнопку или ещё что-то)
    Ongoing - переключение состояния (Ongoing -> Ongoing) Если действию требуется какое-то время на свершение, действие может быть отменено Canceled
    Triggered - (None -> Triggered, Ongoing -> Triggered, Triggered -> Triggered) - триггер сработал (триггер может сработать и без Ongoing)
    Canceled - (Ongoing -> None) См. Ongoing
    Completed - (Triggered -> None) - например отпустили кнопку, официально правильное завершение обработки
    Итого Started и Triggered могут быть в одном такте обработки и почему их нужно объединить? Если это объединять то некоторые действия будут происходить дважды, да и у тебя если присмотреться куб в начале дёргается (т.е. перемещается на большее чем надо расстояние), а затем плавно двигается (когда срабатывают Trigger).
    Start - используется если нужно обработать однократное событие (чаще всего кнопка), действия такие как открыть закрыть инвентарь или например атака (но не обязательно)
    Trigger - действия такие как движение, прыжок, лутание если нужно удерживать кнопку.
    Например движение персонажа на Trigger прикрепляют затем, что игрок может на движение использовать джойстик, а не клаву и там есть порог срабатывания т.е. будут приходить Ongoing перед Trigger.
    PS Может сперва стоит тему серьёзней изучать, а потом ролик пилить, тебя же ни кто не торопит в чём проблема изучать этот плагин в течении месяца или два, а потом ролик делать.
    PPS Этот плагин появился не в UE5, а был и в UE4, но отключён по умолчанию (а в UE5 включён по умолчанию) и кстати он ещё не допилен есть куча todo внутри исходников, например альтернативная раскладка, то как эпики предлагают её реализовывать сейчас мягко говоря странно. Именно поэтому я свой плагин запилил "унаследовавшись" от эпиковского.
    PPPS Ссылочки для самостоятельного изучения
    docs.unrealengine.com/5.1/en-US/enhanced-input-in-unreal-engine/
    dev.epicgames.com/community/learning/tutorials/aqrD/unreal-engine-enhanced-input-binding-with-gameplay-tags-c
    nightails.com/2022/10/16/unreal-engine-enhanced-input-system-in-c/
    Слишком громкое название для видосика ПОЛНЫЙ ГАЙД, я бы это назвал вводный урок и не более.

    • @makeyourgame2210
      @makeyourgame2210  10 місяців тому

      Я не утверждал, что это прям повсеместная и хорошая практика совмещать старт и тригер, я сказал что в зависимости от задач можно и хорошо совмещать тригер и старт) Например, один раз нажал - перс ударил один раз. Зажал - перс проводит этот же удар много раз)

    • @dimanshulgin
      @dimanshulgin 10 місяців тому

      @@makeyourgame2210 Один раз нажал - перс ударил один раз. Зажал - перс проводит этот же удар много раз, достаточно повесить всё на Trigger, по аналогии с Movement, один раз нажал персонаж чучь чуть пододвинулся, зажал персонаж идёт. Start удобен только если тебе нужно отработать одно действие (например толкнуть дверь, чтобы она открылась), т.к. для одиночного действия на Trigger нужно будет флажок вешать.

    • @Prototiphrom
      @Prototiphrom 26 днів тому

      Спасибо что написал разъяснение, молодец. мат часть знаешь (без сарказма, правда спасибо), даже лучше чем в доке написал. Теперь давай бегом учить социальные скиллы и как взаимодейстовать с людьми. А так сам бы уроки пилил, разбираться умеешь да еще и объяснять вроде

  • @igorek242424
    @igorek242424 6 місяців тому

    Класс спасибо большое за объяснение все очень понятно, хотелось бы еще про все модификаторы и тригеры как что работает. Только начинаю изучать, пока сложно. Ваше единственное видео, что нашел которое действительно мне помогло, лучше понять структуру и логику.

  • @return_89
    @return_89 10 місяців тому +3

    Как потратил день на то, чтобы разобраться как согласуются обе системы управления, старая и EInput, на форумах так ответа четкого не нашел. Очень часто сабсистем не подключалась в проекте, т.е. выдавало невалидность🙄
    Спасибо за повтор материала в документации на русском, увидел «полный гайд», подумал более глубокий будет разбор 😊

  • @FlyToha
    @FlyToha 10 місяців тому

    Спасибо! Очень доходчиво разъясняете!

  • @LegionDarkFox
    @LegionDarkFox 19 годин тому

    Подскажите..
    Использую 4 версию. На прошлой системе ввода, что бы игрок мог закрыть UI на туже кнопку взаимодействия использовал "Listen for Input Actor" и "Set Input Mode Game and UI". Все нормально работало.. игрок не мог двигаться при работе с окном, а UI закрывалось на туже кнопку взаимодействия. Но столкнулся с тем что в одном месте нужно использовать "Set Input Mode UI Only" и "прослушивание" перестало работать. Сказали перейти на новую тему инпутов, мол это решит твою проблему.. И теперь сломалось все.. ибо "прослушка" работает на обычный ввод, а его как бы нет. И не ясно как к примеру из UI слушать такой вид ввода что бы закрыть уи.
    Или вот как сделать что на Е одни акторы просто открываются, а у других "подержи". Ибо как мне показалось на этой системе можно сделать кнопку на удержание. И простое нажатие будет и активировать актора (у которого просто нажми), а "выполнение" будет активировать актора( удержание). Правда в такой варианте не выйдет сделать что у акторов могут быть разные таймеры удержания..

  • @Scairp
    @Scairp 5 місяців тому

    Старую систему можно оставить? 5.3 или нет?

  • @vodorodus1
    @vodorodus1 4 місяці тому

    мне эта музыка в кошмарах теперь снится

    • @makeyourgame2210
      @makeyourgame2210  4 місяці тому +1

      @@vodorodus1 она уже сменилась, можете последние видео для новых кошмаров посмотреть.

    • @vodorodus1
      @vodorodus1 4 місяці тому

      @@makeyourgame2210 спасибо!!!

  • @FreeMixHD
    @FreeMixHD 3 місяці тому

    Дружище, ну чо за подход? этого я не знаю это вам не нужно.
    видео все-таки называется ПОЛНЫЙ ГАЙД, почему-бы кратко не показать ВСЕ возможности системы?
    Если кому то скучно или бесполезно он перемотает этот момент, а для других этот момент может оказаться мега полезным и именно тем что он искал

  • @cristalGamer5100
    @cristalGamer5100 2 місяці тому

    онгоинг как стрельба очередями по ощущению

    • @cristalGamer5100
      @cristalGamer5100 2 місяці тому

      канселед может пригодится например для заряженой атаки

    • @cristalGamer5100
      @cristalGamer5100 2 місяці тому

      комплитед если отпускается кнопка и если кнопка не была отпущена раньше тригера

    • @cristalGamer5100
      @cristalGamer5100 2 місяці тому

      плеер контролер тригерит игрок а аиконтролер тригерит движок ?

  • @Diudusa
    @Diudusa 10 місяців тому

    Скажи пожалуйста , можно ли делать игру по мотивам фильма ? Есть фильм один хочу сделать игру но боюсь что будут вопросы 😢

    • @dimanshulgin
      @dimanshulgin 10 місяців тому

      Это лучше с юристом обсуждать.

    • @AnttiViskari-k3d
      @AnttiViskari-k3d 8 місяців тому

      @@dimanshulgin так автор канала и есть юрист)

  • @АндрейЗнак-и1б
    @АндрейЗнак-и1б 3 місяці тому

    Спасибо, только почему то не работает вызов через enhanced input ничего не происходит, а через input action всё работает, может в настройках проекта что то надо изменить?

    • @LegionDarkFox
      @LegionDarkFox 20 годин тому

      если ты на 4 версии остался и подключил эти как плагин.. Да.. там нужно в настройка проекта поменять пару строк. поиши как это подключается в 4. ибо как я понял в 5 они уже изначально настроили это..

  • @skakun.design
    @skakun.design 2 місяці тому

    Спасибо за видео. Я понял что Enhanced это полная шляпа, прощу простыми вещами пользоваться если ты новичок

  • @Not_SatoruGojo
    @Not_SatoruGojo 7 місяців тому

    Спасибо большое за объясление, видео по соседству, англоязычный парень делал, какой же это дегенерат, "Я не буду это объяснять", "это слишком сложно" или "Я это сделаю но не скажу зачем", ненавижу такие туториалы, ничего не было объяснено. А здесь всё понятно и по полочкам!

  • @uegamedev
    @uegamedev 10 місяців тому +5

    Пустое видео. Ничего о модификаторах, программном переназначение клавиш. За ПОЛ ЧАСА можно всё это рассказать. Даже в каких-то базовых вещах автор путается и путает зрителей. "Ну это сложно, смотрите документацию", видео зачем тогда?))))

    • @dimanshulgin
      @dimanshulgin 10 місяців тому

      Если ты используешь С++ (на Blueprint по-моему нельзя, но это не точно, я не разбирался с ними), то программное переназначение клавиш я делал как-то так
      void UGameEnhancedInputSubsystem::RebindMappingKeysControl(const FGameMappableKey& NewMappingKeysControl, bool bForceImmediately)
      {
      if (NewMappingKeysControl.PrimaryIMC)
      {
      if (NewMappingKeysControl.PrimaryIndex < NewMappingKeysControl.PrimaryIMC->GetMappings().Num())
      {
      UInputMappingContext* Context = const_cast(NewMappingKeysControl.PrimaryIMC);
      Context->GetMapping(NewMappingKeysControl.PrimaryIndex).Key = NewMappingKeysControl.PrimaryKey;
      }
      if (NewMappingKeysControl.SecondaryIMC)
      {
      if (NewMappingKeysControl.SecondaryIndex < NewMappingKeysControl.SecondaryIMC->GetMappings().Num())
      {
      UInputMappingContext* Context = const_cast(NewMappingKeysControl.SecondaryIMC);
      Context->GetMapping(NewMappingKeysControl.SecondaryIndex).Key = NewMappingKeysControl.SecondaryKey;
      }
      }
      }
      if (bForceImmediately)
      {
      FModifyContextOptions ModifyContextOptions;
      ModifyContextOptions.bForceImmediately = bForceImmediately;
      RequestRebuildControlMappings(ModifyContextOptions);
      }
      }
      где
      USTRUCT(BlueprintType)
      struct FGameMappableKey
      {
      GENERATED_USTRUCT_BODY()
      /**The tag associated with the input mapping context*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      FGameplayTag ContextTag;
      /**The unique mapping key name for the associated input mapping context. Name from UPlayerMappableKeySettings.*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      FName MappingName;
      /**The localized display name of this key mapping. Use this when displaying the mappings to a user.*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      FText DisplayName;
      /**Primary input mapping context*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      const UInputMappingContext* PrimaryIMC = nullptr;
      /**The mapping key index for the associated primary input mapping context. Value -1 if mapping key not found.*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      int32 PrimaryIndex = -1;
      /**The mapping key of the primary IMC. Used to remap keys.*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "GameMappableKey")
      FKey PrimaryKey;
      /**Secondary input mapping context*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      const UInputMappingContext* SecondaryIMC = nullptr;
      /**The mapping key index for the associated secondary input mapping context.*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "GameMappableKey")
      int32 SecondaryIndex = -1;
      /**The mapping key of the secondary IMC. Used to remap keys.*/
      UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "GameMappableKey")
      FKey SecondaryKey;
      FGameMappableKey() = default;
      explicit FGameMappableKey(const FName& InName)
      : MappingName(InName)
      , PrimaryIMC(nullptr)
      , PrimaryIndex(-1)
      , SecondaryIMC(nullptr)
      , SecondaryIndex(-1)
      {}
      }; - Здесь всякие const указатели на UObject - ы ещё предстоит заменить на TObjectPtr, но это в будущем когда плагин пилить буду.
      ЗЫ ПОЛНЫЙ ГАЙД это конечно смело он назвал, тему которую я месяца два изучал и ещё не совсем разобрался.

  • @JIockjoy
    @JIockjoy 10 місяців тому +1

    Привет, 14:40, я понимаю что есть желание помочь разобраться другим, но зачем говорить то что сам не понял - К примеру на 14:40 о Value Type, кто вешает подобную логику на взрыва куба на VALUE TYPE !!! Прошу читай ОФФ документы правильно!!!!! А вот выписка из него
    You should use bool actions for inputs that have an on or off state. This is the equivalent of the older Action mappings in the legacy input system. For controls like gamepad thumbstick values, you can use 2D axis actions to hold the X and Y value of the thumbstick position. You can use the 3D axis to hold more complex data, such as motion controller information.
    legacy input system, legacy input system , legacy input system , legacy input system - Понимаешь значение этого - legacy input system legacy input system legacy input system legacy input system legacy input system legacy input system legacy input system