Зміна анімацій за натисканням однієї кнопки, QTE та кулька

Опишу якомога простіше, хоча все не так просто як здається. Я спробував розкласти це завдання у себе в голові по поличках і ось що вийшло.

Є сцена, у ній присутні:

Синя кулька (назвемо її "ball") яка за допомогою loop анімації (назвемо її "anim_ball_loop") горизонтально переміщається туди-сюди і в певних місцях чіпляє три тригери, два з них з ім'ям "trigger_red" і один "trigger_green", такий собі quick time event. У сцені ще присутній об'єкт, назвемо його "object". На ньому закріплено кілька анімацій, скажімо три (хоча зрештою їх буде набагато більше), - "anim_01", "anim_02" та "anim_03". Для спрощення завдання кожна анімація займає однаковий час (скажімо 3 секунди). Зі стартом сцени він статичний і знаходиться в положенні початку анімації "anim_01". Статична камера "cam_01" спрямована на "object". Курсор захований.

Все управління полягає в вдалому натисканні кнопки "Е", коли кулька знаходиться в зеленій зоні тригера "trigger_green" (а точніше коли стосується її або повністю в ній).

Коли кулька "ball" стосується або повністю знаходиться в зеленій зоні тригера "trigger_green", гравець повинен встигнути натиснути кнопку "Е", яка повинна активувати анімацію "anim_01" на об'єкті "object". Сама анімація об'єкта відбувається один раз і завмирає на останньому кадрі.

У момент коли кулька "ball" повністю знаходиться в червоній зоні тригера "trigger_red" після натискання гравцем кнопки "Е" повинна активуватися коротка анімація струсу камери довжиною в 1 секунду (можна взяти за основу цей туторіал - https://www.youtube.com /watch?v=4X-CvtGfdjI ) та короткий звуковий ефект. Потім рівно на 2 секунди з'являється текстура gui.

Важливий момент - в момент натискання кнопки "Е" (не важливо начервоному або зеленому тригері) анімація кульки, що бігає, "anim_ball_loop" стає на паузу рівно на час який займає анімація струсу на нашій камері (1 сек) + (2 сек GUI текстура) або анімація на об'єкті (3 сек). Після завершення струсу або анімації кулька знову повертається до своєї анімації "anim_ball_loop". Коротше в будь-якому випадку після натискання "Е" кулька стає на паузу на 3 секунди.

Ще один нюанс, рівно на ці 3 секунди коли кулька на паузі і програється анімація об'єкта або струс камери натискання кнопки "Е" має бути заблоковано щоб не перервати процес.

Все має відбуватися досить динамічно, тому що кулька швидко переміщається наша кнопка відповідно дуже швидко змінює своє призначення.

Поки все просто, ускладнюватимемо.

Наше головне завдання полягає в тому, щоб кожне наступне вдале натискання на "Е" активувало вже наступну в списку анімацію. Наприклад, гравець спочатку промазав і потрапив на червоний тригер - отримав струс і звуковий сигнал. Потім встиг натиснути колись кулька в зеленій зоні і програлася анімація "anim_01" об'єкта "object". Потім промазав - струс. Потім потрапив у зелену зону, але тепер програється вже анімація "anim_02" об'єкта "object". Знову зелена – "anim_03". І так за списком.

Коротше ви зрозуміли, суть в тому, щоб міняти завдання кнопки "Е" з кожним натисканням коли кулька знаходиться в зеленому тригері. Можливо є метод коли можна зробити просто одну довгу анімацію об'єкта "object" і після кожного вдалого попадання зеленим тригером вона програвалася до певного фрейму і потім ставала на паузу а після наступного вдалого попадання відновлювалася. Думаю, це спростило б процес.

І ще кожен вдалий клік теж супроводжується коротким звуком.

Я впевненийщо всі ці дії можна реалізувати набагато простіше, ніж я уявляю, справа в тому, що я 3дешник і знання скриптів у мене нульове. Але я дуже наполегливий і коли з'явилася потреба в цьому скрипті я переглянув півсотні туторіалів і на другу добу у мене цілковита каша в голові. Тому я буду дуже вдячний навіть за найменшу пораду зі спрощення всієї цієї ахінеї або за підказку спробувати інший метод.

Якщо є ті, хто знає і бажає взятися і повністю написати скрипти і максимально оптимізувати весь процес я готовий оплатити працю.