Пример #1
0
    void UpdateState()
    {
        Move();
        if (m_CurrentTime >= m_TimeBetweenActions)
        {
            BossStates action = (BossStates)UnityEngine.Random.Range(0, Enum.GetNames(typeof(BossStates)).Length);
            switch (action)
            {
            case BossStates.ATTACK_1:
                m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.SINUSOIDAL);
                break;

            case BossStates.ATTACK_2:
                m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.CIRCLE);
                break;

            case BossStates.ATTACK_3:
                m_InventoryBehaviour.SetSecondarySlot(ItemType.Missile);
                m_SpaceshipBehaviour.UseSecondaryInventorySlot();
                break;

            case BossStates.INVULNERAVILITY:
                m_InventoryBehaviour.SetSecondarySlot(ItemType.Invulnerability);
                m_SpaceshipBehaviour.UseSecondaryInventorySlot();
                break;
            }
            m_CurrentTime = 0;
        }

        if (!m_IsRageMode && m_SpaceshipBehaviour.m_Health <= m_MaxHealth / 2)
        {
            EnterRageMode();
        }
    }
Пример #2
0
    public void UseSecondaryInventorySlot()
    {
        if (!m_IsDead)
        {
            ItemType item = m_Inventory.GetSecondarySlot();
            switch (item)
            {
            case ItemType.Missile:
                Vector3 missilePosition = new Vector3(transform.position.x + m_BulletOffsetX, transform.position.y, transform.position.z);
                Fire(missilePosition, m_MissileBullet, m_MissileBulletRotation);
                m_AudioSource.PlayOneShot(m_MissileAudio);
                break;

            case ItemType.Invulnerability:
                ApplyInvulnerabilityPowerup();
                break;

            case ItemType.Empty:
                m_AudioSource.PlayOneShot(m_EmptyAudio);
                break;
            }
            m_Inventory.SetSecondarySlot(ItemType.Empty);
        }
    }