Тёмный

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

MakeYourGame!
Подписаться 14 тыс.
Просмотров 2 тыс.
50% 1

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

Игры

Опубликовано:

 

11 фев 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 17   
@makeyourgame2210
@makeyourgame2210 4 месяца назад
Чтобы попасть в ламповый закрытый Telegram чат, где мы помогаем друг другу в изучении Unreal Engine, 3D и обсуждаем игры, то вам нужно пройти по ссылке boosty.to/makeyourgame и осуществить донат на любую комфортную сумму и написать мне, что хотите в чат, а я вам в течение 24 часов пришлю ссылку. ВАЖНО: Убедитесь, что на boosty у вас открыты сообщения. Присоединяйся к единомышленникам! Доступ - навсегда! ================================= Группа в ВКонтакте: vk.com/makeyourgameunreal ================================= Подписка на канал - только приветствуется! ================================= #games #unreal #unrealengine
@WestsiderzRU
@WestsiderzRU 4 месяца назад
Это ОНОО! Спасибо за такие видео! Они прям жизненно необходимы 😃
@merlin3617
@merlin3617 4 месяца назад
Спасибо, прям глоток понятной информации среди индусов и англ. документаций
@wi1dd0g_games
@wi1dd0g_games 4 месяца назад
О. прям видео появились тогда, когда я решил тоже поизучать Enhanced Input. Огромное спасибо!
@FlyToha
@FlyToha 4 месяца назад
Спасибо! Очень доходчиво разъясняете!
@dimanshulgin
@dimanshulgin 4 месяца назад
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 4 месяца назад
Я не утверждал, что это прям повсеместная и хорошая практика совмещать старт и тригер, я сказал что в зависимости от задач можно и хорошо совмещать тригер и старт) Например, один раз нажал - перс ударил один раз. Зажал - перс проводит этот же удар много раз)
@dimanshulgin
@dimanshulgin 4 месяца назад
@@makeyourgame2210 Один раз нажал - перс ударил один раз. Зажал - перс проводит этот же удар много раз, достаточно повесить всё на Trigger, по аналогии с Movement, один раз нажал персонаж чучь чуть пододвинулся, зажал персонаж идёт. Start удобен только если тебе нужно отработать одно действие (например толкнуть дверь, чтобы она открылась), т.к. для одиночного действия на Trigger нужно будет флажок вешать.
@vasyatka760
@vasyatka760 23 дня назад
Спасибо большое за объясление, видео по соседству, англоязычный парень делал, какой же это дегенерат, "Я не буду это объяснять", "это слишком сложно" или "Я это сделаю но не скажу зачем", ненавижу такие туториалы, ничего не было объяснено. А здесь всё понятно и по полочкам!
@JIockjoy
@JIockjoy 4 месяца назад
Привет, 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
@return_89
@return_89 4 месяца назад
Как потратил день на то, чтобы разобраться как согласуются обе системы управления, старая и EInput, на форумах так ответа четкого не нашел. Очень часто сабсистем не подключалась в проекте, т.е. выдавало невалидность🙄 Спасибо за повтор материала в документации на русском, увидел «полный гайд», подумал более глубокий будет разбор 😊
@kronas56
@kronas56 4 месяца назад
Скажи пожалуйста , можно ли делать игру по мотивам фильма ? Есть фильм один хочу сделать игру но боюсь что будут вопросы 😢
@dimanshulgin
@dimanshulgin 4 месяца назад
Это лучше с юристом обсуждать.
@user-gx7lc5bb5c
@user-gx7lc5bb5c Месяц назад
@@dimanshulgin так автор канала и есть юрист)
@uegamedev
@uegamedev 4 месяца назад
Пустое видео. Ничего о модификаторах, программном переназначение клавиш. За ПОЛ ЧАСА можно всё это рассказать. Даже в каких-то базовых вещах автор путается и путает зрителей. "Ну это сложно, смотрите документацию", видео зачем тогда?))))
@dimanshulgin
@dimanshulgin 4 месяца назад
Если ты используешь С++ (на 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, но это в будущем когда плагин пилить буду. ЗЫ ПОЛНЫЙ ГАЙД это конечно смело он назвал, тему которую я месяца два изучал и ещё не совсем разобрался.
Далее
I wish I could change THIS fast! 🤣
00:33
Просмотров 5 млн
Asus  VivoBook Винда за 8 часов!
01:00
Просмотров 316 тыс.
Why Unreal Engine 5.4 is a Game Changer
12:46
Просмотров 1 млн