示例#1
0
    // 离开状态
    public void OnLeave()
    {
        if (!m_pFSM)
        {
            return;
        }

        Trace.Log(m_pFSM.name + "=======OnLeave CreaturePosture_Dead======");

        //死亡动作在攻击层调用,这里结束掉死亡动作
        m_pFSM.BreakAttackAnim();

        SkillCtrl sk = m_pFSM.GetComponent <SkillCtrl>();

        if (sk)
        {
            sk.enabled = true;
        }

        if (m_pFSM.isHero) //复活时切回主角镜头
        {
            SoldierCamera.MainInstance <SoldierCamera>().EnableMode(CameraMode.DeadControl, false);
        }

        SoldierController sco = m_pFSM.GetComponent <SoldierController>();

        if (sco)
        {
            sco.dead        = false;
            sco.desireAngle = m_pFSM.transform.localEulerAngles;
            //sco.bindSoldierCamera.Reset(); 2016-09-22,策划需求,复活后摄像机位置保持原来跟角色的位置,不重置,改为仅取消effect
            CameraEffectUtil.MainInstance.stopEffect();
        }
        if (m_pFSM.isHero)
        {
            //ImageEffects.ImageEffectManager.API_DisableImageEffect<ImageEffects.FullScreenGray>();
            LightingEffectFactory.DisableDeadEffect();
            ImageEffects.ImageEffectManager.API_DisableImageEffect <ImageEffects.FullScreenSaturation>();
            ImageEffects.ImageEffectManager.API_EnableImageEffect <ImageEffects.DepthOfFieldScatter>();
        }


        //恢复死亡不碰撞
        if (m_pFSM.controller)
        {
            m_pFSM.pickableCount++;
            //if (true==m_pFSM.GetVisible())
            //{
            //    m_pFSM.gameObject.layer = m_pFSM.baseLayer;
            //}
        }

        ////实体复活不是重新发下来的,在这里改回原来的层
        //if (!m_pFSM.isHero)
        //{
        //    GameUtil.SetLayer(nOldLayer, m_pFSM.gameObject, true);
        //    //m_pFSM.gameObject.layer = nOldLayer;
        //    //if (m_pFSM.SkinConfig.ScreenCastObject != null)
        //    //{
        //    //    m_pFSM.SkinConfig.ScreenCastObject.layer = nOldLayer;
        //    //}
        //}

        if (m_pFSM.animator)
        {
            Trace.Log("SetTrigger(Reborn)");
            m_pFSM.animator.SetTrigger("Reborn");
            m_pFSM.animator.ResetTrigger("Dead");
            m_pFSM.animator.speed = 1;
        }

        //GfxBloodManager.OnEntityRelive(m_pFSM.entityID, ENTITY_TYPE.TYPE_PLAYER_ROLE);
        USpeedUI.Blood.UBloodManager.Instance.OnEntityRelive(m_pFSM.entityID, ENTITY_TYPE.TYPE_PLAYER_ROLE);
        //TopNameManager.OnEntityRelive(m_pFSM.entityID, ENTITY_TYPE.TYPE_PLAYER_ROLE);

        //某些特效,在模型死亡时,会将模型隐藏起来,复活的时候设置为可见
        m_pFSM.SetVisible(m_pFSM.m_OnViewVisible);

        //         // 小地图显示
        //         U3D_Render.EntityView objev = EntityFactory.getEntityViewByID(m_pFSM.entityID);
        //         if (objev != null)
        //         {
        //             GFxMinimapManager.Instance.SetObjectVisible(m_pFSM.entityID, objev.createinfo.nMinimapIcon, 1);
        //         }
        U3D_Render.EntityView objev = EntityFactory.getPlayerViewByID(m_pFSM.entityID);
        if (objev != null && objev.gameObject != null && objev.Property != null)
        {
            int nHeroID = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION);
            SoundPlayHandler.PlayHeroRandomSound(nHeroID, m_pFSM.entityID, objev.gameObject, ASpeedGame.Data.Scheme.EMHeroSoundType.EHeroSound_Relive);
        }
    }