Перейти к содержимому

Как поставить анимацию на паузу unity

  • автор:

Русские Блоги

Чтобы сделать прямую и обратную анимацию в аниматоре, вы действительно можете сделать две анимации и сделать анимации перехода между ними, но теперь мы говорим об одной анимации, которая останавливается, вперед и назад.

Прежде всего,Используется в старой версии Аниматора с анимацией: скорость = 1 (вперед), скорость = -1 (назад), скорость = 0 (стоп).

Примечание: теперь настройка скорости недействительна

Посмотрите на код:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class AnimController : MonoBehaviour < public Animator ani; private void Start() < ani.speed = 0; >/// /// Скорость прямой трансляции 1 /// public void OnClickForward() < //ani.speed = 2; Скорость движения вперед равна 2 ani.speed = 1; >/// /// тайм-аут /// public void OnClickPause() < ani.speed = 0; >/// /// Скорость перемотки 1 /// public void OnClickBack() < ani.speed = -1; >> 

затем,Посмотрите на текущую практику:

Добавьте переменную с плавающей точкой к параметрам аниматора, а затем назначьте эту переменную анимационному клипу, который необходимо воспроизвести.

Посмотрите на код:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class AnimController : MonoBehaviour < public Animator ani; private void Start() < ani.SetFloat("speed", 0); >/// /// Скорость прямой трансляции 1 /// public void OnClickForward() < ani.SetFloat("speed", 1.0f); >/// /// тайм-аут /// public void OnClickPause() < ani.SetFloat("speed", 0); >/// /// Скорость перемотки 1 /// public void OnClickBack() < // Скорость перемотки 1 //ani.SetFloat("speed ", -5.0f); Скорость обратного воспроизведения 5 ani.SetFloat("speed", -1.0f); >> 

Как привязать анимацию к открытию/закрытию меню паузы на 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

Это обзор горячих клавиш Unity, установленных по умолчанию. Вы также можете скачать таблицу в формате PDF для Windows и MacOSX. Если сочетание клавиш содержит CTRL/CMD, это означает, что нужно использовать клавишу Control на Windows или клавишу Command на MacOSX.

Tools
“Горячая” клавиша Действие
Q Pan (перемещение камеры сцены)
W Move (перемещение)
E Rotate (вращение)
R Scale (масштабирование)
T Rect Tool
Z Pivot Mode toggle (переключение Pivot-режима)
X Pivot Rotation Toggle (переключение поворота пивота)
V Vertex Snap (привязка вершин)
CTRL/CMD+ЛКМ Snap (привязка)
GameObject
CTRL/CMD+SHIFT+N Создать новый игровой объект
ALT+SHIFT+N New empty child to selected game object
CTRL/CMD+ALT+F Переместить объект к точке вида
CTRL/CMD+SHIFT+F Выровнить по виду
SHIFT+F или двойное F Привязывает камеру окна Scene View к выбранному игровому объекту
Window (окно)
CTRL/CMD+1 Scene (сцена)
CTRL/CMD+2 Game (игра)
CTRL/CMD+3 Inspector (инспектор)
CTRL/CMD+4 Hierarchy (иерархия)
CTRL/CMD+5 Project (проект)
CTRL/CMD+6 Animation (анимация)
CTRL/CMD+7 Profiler (профайлер)
CTRL/CMD+9 Магазин ассетов
CTRL/CMD+0 Version Control
CTRL/CMD+SHIFT+C Console (консоль)
Edit
CTRL/CMD+Z Отменить
CTRL+Y (только на Windows) Повторить
CMD+SHIFT+Z (только на Mac) Повторить
CTRL/CMD+X Вырезать
CTRL/CMD+C Копировать
CTRL/CMD+V Вставить
CTRL/CMD+D Дублировать
SHIFT+Del Удалить
F Центрировать камеру сцены на объекте
CTRL/CMD+F Найти
CTRL/CMD+A Выбрать все
CTRL/CMD+P Играть
CTRL/CMD+SHIFT+P Пауза
CTRL/CMD+ALT+P Шаг
Selection (выделение)
CTRL/CMD+SHIFT+1 Загрузить выделение 1
CTRL/CMD+SHIFT+2 Загрузить выделение 2
CTRL/CMD+SHIFT+3 Загрузить выделение 3
CTRL/CMD+SHIFT+4 Загрузить выделение 4
CTRL/CMD+SHIFT+5 Загрузить выделение 5
CTRL/CMD+SHIFT+6 Загрузить выделение 6
CTRL/CMD+SHIFT+7 Загрузить выделение 7
CTRL/CMD+SHIFT+8 Загрузить выделение 8
CTRL/CMD+SHIFT+9 Загрузить выделение 9
CTRL/CMD+ALT+1 Сохранить выделение 1
CTRL/CMD+ALT+2 Сохранить выделение 2
CTRL/CMD+ALT+3 Сохранить выделение 3
CTRL/CMD+ALT+4 Сохранить выделение 4
CTRL/CMD+ALT+5 Сохранить выделение 5
CTRL/CMD+ALT+6 Сохранить выделение 6
CTRL/CMD+ALT+7 Сохранить выделение 7
CTRL/CMD+ALT+8 Сохранить выделение 8
CTRL/CMD+ALT+9 Сохранить выделение 9
Assets (ассеты)
CTRL/CMD+R Обновить

Customizing Your Workspace (Настройка рабочего пространства)

Сделать паузу с анимацией

Как сделать паузу на 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
Спасибо БОЛЬШОЕ!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *