Unity2D Отключение возможности проигрывания анимации

Программирование на Юнити.

Unity2D Отключение возможности проигрывания анимации

Сообщение FirstGameMaker 14 июл 2019, 09:13

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

Вот скрипт:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class AnimPlay : MonoBehaviour

{
    private Animator anim;
    public GameObject Obj;



    void Start()
    {
        anim = GetComponent<Animator>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (null != anim)
            {
                anim.Play("Rotation1", 0, 0f);
                Obj.gameObject.SetActive(false);
                StartCoroutine(Wait(0.9f));
            }
        }



    }
    private IEnumerator Wait(float seconds)
   
        {
            yield return new WaitForSeconds(0.9f);
            Obj.gameObject.SetActive(true);

        }
}
 


Пишите если нужна доп. информация.
Буду благодарен вам за любую поддержку, будь то ссылка на туториал или помощь со скриптом.
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57

Re: Unity2D Отключение возможности проигрывания анимации

Сообщение waruiyume 14 июл 2019, 14:36

Если
Animator.IsInTransition
или не
Animator.GetCurrentAnimatorStateInfo.IsTag("Что-то то там")
не запускать анимацию
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Unity2D Отключение возможности проигрывания анимации

Сообщение TheMamont 15 июл 2019, 14:11

FirstGameMaker писал(а):Мне нужно, чтобы пока воспроизводится анимация, нельзя было начать воспроизводить новую или заново эту анимацию.
Проблема в том, что я не могу найти никакого материала по этой теме.

Вот скрипт:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class AnimPlay : MonoBehaviour

{
    private Animator anim;
    public GameObject Obj;



    void Start()
    {
        anim = GetComponent<Animator>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (null != anim)
            {
                anim.Play("Rotation1", 0, 0f);
                Obj.gameObject.SetActive(false);
                StartCoroutine(Wait(0.9f));
            }
        }



    }
    private IEnumerator Wait(float seconds)
   
        {
            yield return new WaitForSeconds(0.9f);
            Obj.gameObject.SetActive(true);

        }
}
 


Пишите если нужна доп. информация.
Буду благодарен вам за любую поддержку, будь то ссылка на туториал или помощь со скриптом.

Вообще можно сделать костыль такого рода: есть скрипт который запускает анимации и в нем есть булевая переменная. В начале всех анимаций эта булка становится тру в конце - фолс. Проверять перед запуском анимации что булка равна фолс.
TheMamont
UNITрон
 
Сообщения: 198
Зарегистрирован: 21 мар 2019, 09:00

Re: Unity2D Отключение возможности проигрывания анимации

Сообщение FirstGameMaker 18 июл 2019, 08:44

waruiyume писал(а):не запускать анимацию
Только есть одна проблема: Я не могу найти информацию о том как можно запретить запускать новую анимацию.
P.S Я в C# совсем недавно.
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57

Re: Unity2D Отключение возможности проигрывания анимации

Сообщение FirstGameMaker 18 июл 2019, 08:48

TheMamont писал(а):Вообще можно сделать костыль такого рода: есть скрипт который запускает анимации и в нем есть булевая переменная. В начале всех анимаций эта булка становится тру в конце - фолс. Проверять перед запуском анимации что булка равна фолс.
Но как именно запретить запуск новых анимаций?
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57

Re: Unity2D Отключение возможности проигрывания анимации

Сообщение TheMamont 18 июл 2019, 14:59

FirstGameMaker писал(а):
TheMamont писал(а):Вообще можно сделать костыль такого рода: есть скрипт который запускает анимации и в нем есть булевая переменная. В начале всех анимаций эта булка становится тру в конце - фолс. Проверять перед запуском анимации что булка равна фолс.
Но как именно запретить запуск новых анимаций?

Всмысле как ? Я же написал проверять что bool==false.
Синтаксис:
Используется csharp
public bool is_animating_now;
if(!is_animating_now)
{
//проигрываешь анимацию
}
 

Но лучше так не делать и пользоваться другим способом.
TheMamont
UNITрон
 
Сообщения: 198
Зарегистрирован: 21 мар 2019, 09:00

Re: Unity2D Отключение возможности проигрывания анимации

Сообщение FirstGameMaker 19 июл 2019, 15:33

TheMamont писал(а):Но лучше так не делать и пользоваться другим способом.
Думаю, на первое время пока пойдёт, если уж проблемы появятся то буду искать другое решение, а так спасибо тебе).

Вот код если кому надо:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class AnimPlay : MonoBehaviour

{
    private Animator anim;
    public GameObject Obj;
    public bool An;
   


    void Start()
    {
        anim = GetComponent<Animator>();

    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (!An)
            {
                if (null != anim)
                {
                    anim.Play("Rotation1", 0, 0f);
                    Obj.gameObject.SetActive(false);
                    StartCoroutine(Wait(0.9f));
                    An = true;
                }

            }


        }



    }
    private IEnumerator Wait(float seconds)
   
        {
            yield return new WaitForSeconds(0.7f);
            Obj.gameObject.SetActive(true);
            An = false;
        }
    }

 
FirstGameMaker
UNец
 
Сообщения: 39
Зарегистрирован: 29 апр 2019, 11:57


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13