예제 #1
0
    /// <summary>
    /// 更新
    /// </summary>
    protected override void Update()
    {
        SpacecraftEntity main = GetMainEntity();

        if (main == null)
        {
            return;
        }

        //当前状态
        bool isBattle         = IsBattling();
        bool isBurstReady     = main.GetBurstReady();
        bool isBurstActivated = IsPeerless();

        //能量属性
        float peerless    = (float)main.GetAttribute(AttributeName.kConverterValue);
        float peerlessMax = (float)main.GetAttribute(AttributeName.kConverterMax);

        //能量条
        m_PowerSlider.gameObject.SetActive(true);
        if (peerlessMax > 0 && peerless > 0)
        {
            m_PowerSlider.fillAmount = Mathf.Lerp(m_PowerSlider.fillAmount, peerless / peerlessMax, Time.deltaTime * 2);
        }
        else
        {
            m_PowerSlider.fillAmount = Mathf.Lerp(m_PowerSlider.fillAmount, 0, Time.deltaTime * 2);
        }

        //倒计时
        //m_CountdownBox.gameObject.SetActive(isBurstActivated);
        //if(isBurstActivated)
        //{
        //peerless
        //double consume = main.GetAttribute(AttributeName.kConverterCostEfficiency);
        //Debug.LogError(consume);
        //}

        //热键显示
        //m_HotkeyBox.gameObject.SetActive(isBattle);
        m_Hotkey2.gameObject.SetActive(isBurstReady && !isBurstActivated);
        m_Hotkey1.gameObject.SetActive(Mathf.Approximately(peerless, peerlessMax) && !isBurstReady && !isBurstActivated);

        //状态动画
        if (isBattle != m_BattleState)
        {
            m_BattleState = isBattle;

            m_StateAnimator.ResetTrigger("Cruise");
            m_StateAnimator.ResetTrigger("Battle");
            m_StateAnimator.SetTrigger(isBattle ? "Battle" : "Cruise");
        }

        //特效动画
        string newState = "Normal";

        if (isBattle)
        {
            if (peerless >= peerlessMax && peerlessMax > 0)
            {
                newState = isBurstReady ? "Hold" : "Already";
            }
            if (isBurstActivated)
            {
                newState = "Release";
            }
        }
        if (!newState.Equals(m_EffectState))
        {
            m_EffectState = newState;

            m_EffectAnimator.ResetTrigger("Normal");
            m_EffectAnimator.ResetTrigger("Already");
            m_EffectAnimator.ResetTrigger("Hold");
            m_EffectAnimator.ResetTrigger("Release");
            m_EffectAnimator.SetTrigger(newState);
        }
    }