Страница 1 из 1

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

СообщениеДобавлено: 14 июл 2019, 09:13
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);

        }
}
 


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

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

СообщениеДобавлено: 14 июл 2019, 14:36
waruiyume
Если
Animator.IsInTransition
или не
Animator.GetCurrentAnimatorStateInfo.IsTag("Что-то то там")
не запускать анимацию

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

СообщениеДобавлено: 15 июл 2019, 14:11
TheMamont
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);

        }
}
 


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

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

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

СообщениеДобавлено: 18 июл 2019, 08:44
FirstGameMaker
waruiyume писал(а):не запускать анимацию
Только есть одна проблема: Я не могу найти информацию о том как можно запретить запускать новую анимацию.
P.S Я в C# совсем недавно.

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

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

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

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

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

Но лучше так не делать и пользоваться другим способом.

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

СообщениеДобавлено: 19 июл 2019, 15:33
FirstGameMaker
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;
        }
    }