Выполнение условия через секунду в юнити

Всем привет! как сделать такую логику: если объект стоит на месте, то что - то происходит. у меня есть карта(это карточная игра) и если эта карта стоит1 секунду и не двигается, то создается объект(череp Instantiate()). Заранее спасибо


Ответы (2 шт):

Автор решения: OwlCherubael

Для этого нужно использовать класс Time. Ниже приведен пример кода.

    public float second;
    public bool isImmovable = false;
    private Vector3 objectPosition;

    void Start()
    {
        objectPosition = transform.position;
        oneSecond = 1;
    }

    void Update()
    {
        oneSecond -= Time.deltaTime;
        if (oneSecond <= 0)
        {
            oneSecond = 1;
            if (objectPosition == transform.position)
                isImmovable = true;
            else if (objectPosition != transform.position)
            {
                objectPosition = transform.position;
                isImmovable = false;
            }
        }
    }
→ Ссылка
Автор решения: Alemkhan Utepkaliev

Изучай корутины. Вот пример:

        private bool _isCondition; // для условия
        private IEnumerator _waitCoroutine; // хранение корутины, необходим для ссылки на запущенную корутину

        private void Start()
        {
            _waitCoroutine = WaitForInstantiate(); // присваивание корутины
        }

        private void CheckCondition()
        {
            if (_isCondition) // если условие выполняется то запускаем корутину
            {
                StartCoroutine(_waitCoroutine);
            }
            else // если условие не выполнено, то останавливаем корутину если она запустилась
            {
                StopCoroutine(_waitCoroutine);
                
                // StopAllCoroutines(); // Есть возможность остановить все корутины в данном скрипте
            }
        }

        private IEnumerator WaitForInstantiate()
        {
            yield return new WaitForSeconds(1f); // Ожидание 1 сек.

            Instantiate(new GameObject()); // Необходимое действие
        }
→ Ссылка