No video

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

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

Пікірлер: 19

  • @makeyourgame2210
    @makeyourgame22106 ай бұрын

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

  • @igorek242424
    @igorek242424Ай бұрын

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

  • @WestsiderzRU
    @WestsiderzRU5 ай бұрын

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

  • @merlin3617
    @merlin36176 ай бұрын

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

  • @Not_SatoruGojo
    @Not_SatoruGojo2 ай бұрын

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

  • @wi1dd0g_games
    @wi1dd0g_games6 ай бұрын

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

  • @Scairp
    @Scairp18 күн бұрын

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

  • @return_89
    @return_896 ай бұрын

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

  • @dimanshulgin
    @dimanshulgin6 ай бұрын

    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

    6 ай бұрын

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

  • @dimanshulgin

    @dimanshulgin

    6 ай бұрын

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

  • @FlyToha
    @FlyToha6 ай бұрын

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

  • @kronas56
    @kronas566 ай бұрын

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

  • @dimanshulgin

    @dimanshulgin

    6 ай бұрын

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

  • @user-gx7lc5bb5c

    @user-gx7lc5bb5c

    3 ай бұрын

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

  • @JIockjoy
    @JIockjoy6 ай бұрын

    Привет, 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

  • @uegamedev
    @uegamedev6 ай бұрын

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

  • @dimanshulgin

    @dimanshulgin

    6 ай бұрын

    Если ты используешь С++ (на Blueprint по-моему нельзя, но это не точно, я не разбирался с ними), то программное переназначение клавиш я делал как-то так void UGameEnhancedInputSubsystem::RebindMappingKeysControl(const FGameMappableKey& NewMappingKeysControl, bool bForceImmediately) { if (NewMappingKeysControl.PrimaryIMC) { if (NewMappingKeysControl.PrimaryIndex GetMappings().Num()) { UInputMappingContext* Context = const_cast(NewMappingKeysControl.PrimaryIMC); Context->GetMapping(NewMappingKeysControl.PrimaryIndex).Key = NewMappingKeysControl.PrimaryKey; } if (NewMappingKeysControl.SecondaryIMC) { if (NewMappingKeysControl.SecondaryIndex 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, но это в будущем когда плагин пилить буду. ЗЫ ПОЛНЫЙ ГАЙД это конечно смело он назвал, тему которую я месяца два изучал и ещё не совсем разобрался.

Келесі