Ejemplo n.º 1
0
    /**********************************************************************************/
    // падаем в позицию
    //
    /**********************************************************************************/
    public void DropInPosition(Point dropPosition)
    {
        m_dropPosition    = dropPosition;
        m_currentDropTime = DropTime;

        Vector2 startPosition = dropPosition.GetUnityPoint();

        startPosition.y += (int)(speed * DropTime) + Base.HALF_OF_CELL;
        startPosition.x += Base.HALF_OF_CELL;

        transform.position = startPosition;
        m_dropState        = DR_STATE.ACTIVE;
    }
Ejemplo n.º 2
0
    /**********************************************************************************/
    // процессинг дроп-пода
    //
    /**********************************************************************************/
    private void FixedUpdate()
    {
        // приостанавливаем всё на время паузы
        if (GameManager.GamePaused)
        {
            if (m_rb2d.velocity.sqrMagnitude != 0.0f)
            {
                m_rb2d.velocity = new Vector2(0, 0);
            }
            return;
        }


        // падаем вниз
        if (m_dropState == DR_STATE.ACTIVE)
        {
            m_currentDropTime -= Time.deltaTime;
            if (m_currentDropTime <= 0.0f)
            {
                m_dropState = DR_STATE.DROPPED;
                m_animator.SetBool("Burn", true);

                // включаем звуковой эффект и анимацию частиц
                if (BurstSoundKey != "")
                {
                    GameAudioManager.Instance.PlaySound(BurstSoundKey);
                }
                BurstSystem.Play();

                // трясём камеру
                CameraControllerDuelMode.ShakeCamera();
            }
            else
            {
                MoveGObject(Base.DIREC.DOWN);
            }
        }
        // проверка на окончание анимации
        // после неё объект возвращается в пулл объектов фабрики
        // и создаем объект дропа
        else if (m_dropState == DR_STATE.DROPPED)
        {
            if (m_animator.GetCurrentAnimatorStateInfo(0).IsName("Base_Layer.EndOfAnimation"))
            {
                m_animator.SetBool("Burn", false);
                gameObject.SetActive(false);
                m_dropState = DR_STATE.FINISHED;

                GameObject go = ObjectFactory.GetInstance().CreateGObject(transform.position, Base.DIREC.DOWN, m_dropType, false);  // создаём дроп

                // устанавливаем производстенную базу в null, в случае с дропом этот механизм не используется
                BonusCtr bctr = go.GetComponent <BonusCtr>();
                if (bctr != null)
                {
                    bctr.ProductionBase = null;
                }

                ObjectFactory.GetInstance().ReturnObjectToCash(gameObject, GOType);       // возвращаем объект дроп-пода в кеш фабрики объектов
            }
        }
    }