示例#1
0
    /**********************************************************************************/
    // взрываем гранату
    //
    /**********************************************************************************/
    protected virtual void BlowUpGrenade()
    {
        Point position = GetGlobalPosition();
        List <CIGameObject> unitsInExplosion = GameObjectMapController.GetInstance().SearchEnemiesInRadius(position, ExplosionRadius, PLAYER.NO_PLAYER, false);
        DamageData          dd = new DamageData(damage, DamageData.DAMAGE_TYPE.PHYSICAL, this, DamageData.RESPONSE.NOT_EXPECTED);

        // наносим урон всем причастным
        foreach (CIGameObject gmo in unitsInExplosion)
        {
            gmo.ApplyDamage(dd);
        }

        List <GeneratedEnvironmentCtr> envInExplosion = GameObjectMapController.GetInstance().SearchEnvironmentInRadius(position, ExplosionRadius, false);

        // наносим урон всем причастным
        foreach (CIGameObject env in envInExplosion)
        {
            env.ApplyDamage(dd);
        }

        // проверяем игроков
        foreach (CIGameObject plObject in m_players)
        {
            Point plPosition = plObject.GetGlobalPosition();
            Point diff       = position - plPosition;

            if (diff.GetSimpleLength() <= ExplosionRadius)
            {
                plObject.ApplyDamage(dd);
            }
        }

        // трясём камеру
        CameraControllerDuelMode.ShakeCamera(ShakePower);
    }
示例#2
0
 /**********************************************************************************/
 // переключаем нашу пулю в состояние "взрыва"
 //
 /**********************************************************************************/
 protected void BurnBullet()
 {
     CameraControllerDuelMode.ShakeCamera(ShakePower);   // сотрясаем камеру, если нужно
     m_state = BULLET_STATE.BURN;
     m_animator.SetBool("Burn", true);
     PlayBurstSoundEffect();
 }
示例#3
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);       // возвращаем объект дроп-пода в кеш фабрики объектов
            }
        }
    }