Сделать паузу с анимацией
Как сделать паузу на 5 секунд, чтоб открывалось окно с анимацией (она как раз таки длится 5 секунд), после чего окно закрывалось и пауза снималась?
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Logist : MonoBehaviour < public Syn[] BallGenerationsPrefabs; public GameObject pause; private void OnEnable() =>Syn.BallsCollided += OnBallsHit; private void OnDisable() => Syn.BallsCollided -= OnBallsHit; private void OnBallsHit(Syn ballA, Syn ballB) < if (ballA.GenerationId == ballB.GenerationId) < Vector3 middlePosAB = Vector3.Lerp(ballA.transform.position, ballB.transform.position, 0.5f); int nextGenerationId = ballA.GenerationId + 1; Instantiate(BallGenerationsPrefabs[nextGenerationId], middlePosAB, Quaternion.identity); ScoreScript.gems += nextGenerationId; if (nextGenerationId == 9) < DiamondScript.gems += 1; //Здесь нужно чтоб игра встала на 5 секунд с анимацией и GameObject(pause) включился. На нем и висит анимация. //пока я здесь прописал просто паузу и включение объекта. pause.SetActive(true); Time.timeScale = 0; >ballA.DestroySelf(); ballB.DestroySelf(); > > >
Может это сделать отдельным скриптом и перенаправлять с этого туда?
Или как-то еще, подскажите пожалуйста
#1
15:50, 12 июля 2022
Странно, откуда берутся люди, которые знают про делегаты, но не знают про корутины или апдейты =\
#2
15:56, 12 июля 2022
Неуместно умничаешь. Т.к. есть форумы, а я этим занимаюсь меньше месяца.
- A_Kuzmin
- Пользователь
#3
17:13, 12 июля 2022
QuickQuest
> Как сделать паузу на 5 секунд, чтоб открывалось окно с анимацией (она как раз
> таки длится 5 секунд), после чего окно закрывалось и пауза снималась?
Привязать то что должно двигаться и обновляться во время паузы к параметру Time.unscaledTime.
запускать корутину, которая через unscaledtime отсчитывает 5 секунд и после этого удаляет всплывающее окно.
если в паузе проигрывается например персонажная анимация, то в аниматоре можно выставить для update mode опцию unscaled time.
#4
17:36, 12 июля 2022
A_Kuzmin
Спасибо БОЛЬШОЕ!
Как привязать анимацию к открытию/закрытию меню паузы на Unity?
Я создал аниматор с двумя анимациями для открытия и закрытия меню паузы в игре следующим образом: Но когда я запускаю это меню, ни одна из анимаций не срабатывает. Я новичок в Unity UI, но предполагаю, что нужно вставить вызов из аниматора в скрипт. Я пробовал несколько способов, но постоянно выдавало разные ошибки. Мог бы кто-нибудь помочь встроить вызов анимаций из скрипта правильным образом? Заранее спасибо за помощь! Вот скрипт:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Pause_menu : MonoBehaviour < public static bool GameIsPaused = false; public GameObject pauseMenuUI; void Update() < if (Input.GetKeyDown(KeyCode.Escape)) < if (GameIsPaused) Resume(); else Pause(); >> public void Resume() < pauseMenuUI.SetActive(false); Time.timeScale = 1f; GameIsPaused = false; >void Pause() < pauseMenuUI.SetActive(true); Time.timeScale = 0f; GameIsPaused = true; >>
Отслеживать
задан 17 мая 2023 в 14:18
30 6 6 бронзовых знаков
Как поставить анимацию на паузу unity
boned11 07 фев 2015, 19:31
привет всем. помогите с проблемой. сделал анимацию меню паузы, но никак не могу сделать выключение паузы.
паузу включаю так:
Синтаксис:
Синтаксис: [ Показать ]
Используется csharp
if ( Input. GetKey ( KeyCode. Escape ) )
{
anim. SetBool ( «isPause» , true ) ;
}
как сделать чтоб при повторном нажатии ESC игра продолжалась?
и еще как добавить туда Time.timeScale = 0 чтоб это не мешало проигрыванию анимации меню?
У вас нет доступа для просмотра вложений в этом сообщении.
boned11 UNIт Сообщения: 146 Зарегистрирован: 29 дек 2013, 00:42
Re: Анимация паузы
I-Dgt 08 фев 2015, 01:41
Синтаксис:
Синтаксис: [ Показать ]
Используется csharp
bool pause = true ;
if ( Input. GetKey ( KeyCode. Escape ) )
{
if ( pause == true )
{
anim. SetBool ( «isPause» , true ) ;
pause = false ;
}
else if ( pause == false )
{
anim. SetBool ( «isPause» , false ) ;
pause = true ;
}
}
Это на счёт повторного нажатия
I-Dgt UNIт Сообщения: 142 Зарегистрирован: 29 дек 2013, 18:20
Re: Анимация паузы
boned11 08 фев 2015, 13:46
почему то ваш вариант срабатывает не всегда. иногда приходится 2 -3 раза нажимать. в чем может быть проблема
boned11 UNIт Сообщения: 146 Зарегистрирован: 29 дек 2013, 00:42
Re: Анимация паузы
boned11 08 фев 2015, 13:53
boned11 писал(а): почему то ваш вариант срабатывает не всегда. иногда приходится 2 -3 раза нажимать. в чем может быть проблема
РЕШЕНО. заменил GetKey на GetKeyDown
boned11 UNIт Сообщения: 146 Зарегистрирован: 29 дек 2013, 00:42
Re: Анимация паузы
boned11 08 фев 2015, 13:55
Помогите теперь со вторым пунктом. Как установить Time.timeScale =0, так чтоб это не мешало проигрыванию анимации паузы??
boned11 UNIт Сообщения: 146 Зарегистрирован: 29 дек 2013, 00:42
Re: Анимация паузы
I-Dgt 08 фев 2015, 13:59
Скинь контроллер. Может со вторым пунктом помогу. Или опиши как устроина пауза
I-Dgt UNIт Сообщения: 142 Зарегистрирован: 29 дек 2013, 18:20
Re: Анимация паузы
boned11 08 фев 2015, 15:13
I-Dgt писал(а): Скинь контроллер. Может со вторым пунктом помогу. Или опиши как устроина пауза
пауза делается на новом UnityUI 4.6. на картинку добавлен контроллер анимации. состоящий из одной анимации. мне нужно, чтоб когда я нажимаю на ESC игра ставилась на паузу и проигрывалась анимация паузы. если я добавляю в код, который в первом сообщении Time.timeScale = 0, то и анимация останавливается. вот скрин
У вас нет доступа для просмотра вложений в этом сообщении.
boned11 UNIт Сообщения: 146 Зарегистрирован: 29 дек 2013, 00:42
Re: Анимация паузы
I-Dgt 08 фев 2015, 16:16
Сделать паузу с анимацией
Как сделать паузу на 5 секунд, чтоб открывалось окно с анимацией (она как раз таки длится 5 секунд), после чего окно закрывалось и пауза снималась?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Logist : MonoBehaviour { public Syn[] BallGenerationsPrefabs; public GameObject pause; private void OnEnable() => Syn.BallsCollided += OnBallsHit; private void OnDisable() => Syn.BallsCollided -= OnBallsHit; private void OnBallsHit(Syn ballA, Syn ballB) { if (ballA.GenerationId == ballB.GenerationId) { Vector3 middlePosAB = Vector3.Lerp(ballA.transform.position, ballB.transform.position, 0.5f); int nextGenerationId = ballA.GenerationId + 1; Instantiate(BallGenerationsPrefabs[nextGenerationId], middlePosAB, Quaternion.identity); ScoreScript.gems += nextGenerationId; if (nextGenerationId == 9) { DiamondScript.gems += 1; //Здесь нужно чтоб игра встала на 5 секунд с анимацией и GameObject(pause) включился. На нем и висит анимация. //пока я здесь прописал просто паузу и включение объекта. pause.SetActive(true); Time.timeScale = 0; } ballA.DestroySelf(); ballB.DestroySelf(); } } }
Может это сделать отдельным скриптом и перенаправлять с этого туда?
Или как-то еще, подскажите пожалуйста
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как сделать паузу
Всем привет! Хотел спросить как же сделать паузу! Допустим когда игрок заходит в игру, то ему нужно.
Как сделать рандомную паузу?
using System.Collections; using System.Collections.Generic; using UnityEngine; public class.
Как сделать паузу между отнятиями жизни
здраствуйте форумчане. помогите пожалуйста моя ситуация такая: есть персонаж и зомби когда зомби.
Как сделать паузу между нажатиями на клавишу в C#?
Есть к примеру у меня какое то действие после нажатия пробела: if.
Сын моей мамы
206 / 140 / 66
Регистрация: 09.05.2020
Сообщений: 733
Looujk, используй короутину.Просто активируешь, что тебе надо и через пять секунд ставишь SetActive(false)
322 / 251 / 82
Регистрация: 07.05.2017
Сообщений: 1,848
анимации могут быть разной длины. разумнее проверять производится ли анимация. в классе аниматора по моему есть проверка на что-то типа
if(_animator.анимация.isPlaying)
погугли сам.
Регистрация: 04.01.2022
Сообщений: 35
Благодаря этому:
del
Сын моей мамы
206 / 140 / 66
Регистрация: 09.05.2020
Сообщений: 733
Gammister, да , разумнее, но надо ли?
Ведь анимация будет проигрываться бесконечно если ничего не задавать.А чтобы она проигрывалась один раз, надо создать параметр и присваивать ему значение при нажатии на кнопку.
Как по мне, это лишняя морока
Регистрация: 04.01.2022
Сообщений: 35
Ссылку убрали так как из другого форума
Короче я просто сделал 5 секунд анимацию и прописал следующее:
yield return new WaitForSecondsRealtime(time);
А на самой анимации выбрал: unscaled time