Русские Блоги
Чтобы сделать прямую и обратную анимацию в аниматоре, вы действительно можете сделать две анимации и сделать анимации перехода между ними, но теперь мы говорим об одной анимации, которая останавливается, вперед и назад.
Прежде всего,Используется в старой версии Аниматора с анимацией: скорость = 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
Спасибо БОЛЬШОЕ!