Ejemplo n.º 1
0
        private void UpdateActors(AoeObj aoeObj)
        {
            //离开的演员
            List <ActorObj> leaveActors = new List <ActorObj>();

            for (int i = 0; i < aoeObj.actorInRange.Count; i++)
            {
                ActorObj actor = aoeObj.actorInRange[i];
                if (!Sensor.CheckActorInRange(aoeObj, actor))
                {
                    leaveActors.Add(actor);
                }
            }
            for (int a = 0; a < leaveActors.Count; a++)
            {
                aoeObj.actorInRange.Remove(leaveActors[a]);
            }
            ExecuteActorLeaveFunc(aoeObj, leaveActors);

            //新进入的演员
            List <ActorObj> enterActors = new List <ActorObj>();

            foreach (var item in Sensor.GetActorsInRange(aoeObj))
            {
                if (aoeObj.actorInRange.IndexOf(item) < 0)
                {
                    enterActors.Add(item);
                }
            }
            ExecuteActorEnterFunc(aoeObj, enterActors);
            for (int a = 0; a < enterActors.Count; a++)
            {
                aoeObj.actorInRange.Add(enterActors[a]);
            }
        }
Ejemplo n.º 2
0
        public behaviac.EBTStatus CanAttack(ActorType aimActorType)
        {
            //   return behaviac.EBTStatus.BT_SUCCESS;

            if (!m_actor.CanChangeAttack() || m_actor.curActorState == ACTOR_STATE.AS_RUN)
            {
                return(behaviac.EBTStatus.BT_FAILURE);
            }

            //当前是否硬直状态
            if (m_actor.IsNonControl || m_actor.IsActorEndure())
            {
                return(behaviac.EBTStatus.BT_FAILURE);
            }


            //增加攻击对象
            m_AttackObj = m_actor.GetSelTarget();
            if (m_AttackObj)
            {
                return(behaviac.EBTStatus.BT_SUCCESS);
            }
            else
            {
                m_AttackObj = m_actor.AutoSelTarget(10);
                if (m_AttackObj)
                {
                    m_actor.SelectTarget(m_AttackObj);
                    return(behaviac.EBTStatus.BT_SUCCESS);
                }
            }
            return(behaviac.EBTStatus.BT_FAILURE);
        }
Ejemplo n.º 3
0
        //GameObject boneEffect = null;
        //Transform refNode = null;

        /// <summary>
        /// 是否随着owner一起缩放
        /// </summary>


        public override void Init(LuaTable desc, ActorObj _owner, ActorObj _giver)
        {
            base.Init(desc, _owner, _giver);
            // effectPath = "Effect/skill/buff/" + desc.buff_param3;

            //  scaleEffectWithOwner = (desc.fParam[3] == 0);
        }
Ejemplo n.º 4
0
 public void OnExit(ActorObj actor)
 {
     for (int i = 0; i < skillGiftsList.Count; ++i)
     {
         skillGiftsList[i].OnExit(actor);
     }
 }
Ejemplo n.º 5
0
 public void Update(ActorObj actor)
 {
     for (int i = 0; i < skillGiftsList.Count; ++i)
     {
         skillGiftsList[i].Update(actor);
     }
 }
Ejemplo n.º 6
0
    public void SetWing(int id)
    {
        if (null == mRoleModel)
        {
            return;
        }

        Transform bTran = ActorObj.RecursiveFindChild(mRoleModel.transform, "E_back");

        if (bTran == null)
        {
            return;
        }

        id = ConfigManager.Instance.BagItem.GetWingModelID(id);
        if (id != 0)
        {
            GameObject obj = SceneLoader.LoadModelObject(id);
            if (obj == null)
            {
                return;
            }

            obj.transform.SetParent(bTran);
            obj.transform.localPosition = Vector3.zero;
            obj.transform.localRotation = Quaternion.identity;
            obj.SetActive(true);
        }
    }
Ejemplo n.º 7
0
    /// <summary>
    /// 场景模型增加通知
    /// </summary>
    /// <param name="obj"></param>
    public void OnModelEventUpdate(ActorObj obj)
    {
//        ActorObj obj = parameter.objParameter as ActorObj;
        if (obj is NpcObj)
        {
            if (!serverByScripts.ContainsKey(obj.ServerID))
            {
                Transform  pointNode = obj.transform.Find("E_top");
                GameObject p         = Instantiate(logoPrefab) as GameObject;
                p.SetActive(true);
                p.gameObject.transform.SetParent(pointNode);
                p.gameObject.transform.GetComponent <RectTransform>().position   = pointNode.position;
                p.gameObject.transform.GetComponent <RectTransform>().localScale = Vector3.one;
                p.transform.SetParent(grid.transform);
                p.transform.SetParent(grid.transform);
                HeadLogoItem head = p.GetComponent <HeadLogoItem>();
                head.Set(obj, obj.ConfigID, obj.ServerID);
                serverByScripts[obj.ServerID] = head;
            }
            else
            {
                serverByScripts[obj.ServerID].gameObject.SetActive(true);
                serverByScripts[obj.ServerID].Set(obj, obj.ConfigID, obj.ServerID);
            }
        }
    }
Ejemplo n.º 8
0
        protected override void Update()
        {
            if (bAutoEnd)
            {
                return;
            }

            //目标死亡切换
            if (m_aimTransform != null)
            {
                ActorObj actorBase = m_aimTransform.GetComponent <ActorObj>();
                if (actorBase != null)
                {
                    //在这里判断,通过事件发送可能已经被丢失,所以在这里判断
                    if (actorBase.IsDeath())
                    {
                        //Debug.Log("1");
                        m_aimTransform = null;
                        CancelInvoke("NextAim");
                        NextAim();
                    }
                }
            }

            base.Update();
        }
Ejemplo n.º 9
0
        //是否怪物全部死亡
        public bool IsMonsterAllDeath()
        {
            List <ActorObj> actorList = CoreEntry.gActorMgr.GetAllMonsterActors();

            for (int i = 0; i < actorList.Count; ++i)
            {
                ActorObj actorBase = actorList[i];
                //对IOS出现怪物不动 报错的异常  进行错误处理
                if (GameLogicMgr.checkValid(actorBase.gameObject) == false)
                {
                    continue;
                }

                //敌方阵营才算
                if (actorBase.m_TeamType == 3)
                {
                    if (actorBase.mActorType == ActorType.AT_MONSTER ||
                        actorBase.mActorType == ActorType.AT_BOSS ||
                        actorBase.mActorType == ActorType.AT_MECHANICS)
                    {
                        if (!actorBase.IsDeath())
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 查找目标。
        /// </summary>
        /// <param name="dis">查找范围。</param
        /// <returns>查找的目标对象。</returns>
        public ActorObj FindTarget(float dis, int mid = 0)
        {
            //如果已经有目标了
            UpdateSelectTarget();
            if (mid != 0 && m_SelectTargetObject != null)
            {
                if (m_SelectTargetObject.mActorType == ActorType.AT_MONSTER || m_SelectTargetObject.mActorType == ActorType.AT_BOSS)
                {
                    if (mid == (m_SelectTargetObject as MonsterObj).ConfigID)
                    {
                        return(m_SelectTargetObject);
                    }
                }
            }

            float    minDistance = Mathf.Min(dis, 100000.0f);
            ActorObj selectActor = null;

            if (PlayerData.Instance.CurPKMode != PKMode.PK_MODE_PEACE)
            {
                //非和平模式优先搜索玩家
                selectActor = GetNearestActor(CoreEntry.gActorMgr.GetAllPlayerActors(), ref minDistance);
            }
            if (selectActor == null)
            {
                selectActor = GetNearestActor(CoreEntry.gActorMgr.GetAllMonsterActors(), ref minDistance);
            }
            SelectTarget(selectActor);
            return(selectActor);
        }
Ejemplo n.º 11
0
 // 杀死某角色的所有召唤物
 static public void OnSummonKillAll(ActorObj actorBase)
 {
     //
     if (actorBase.m_skillSummonList != null)
     {
         int index = 0;
         while (true)
         {
             if (actorBase.m_skillSummonList.Count <= index)
             {
                 break;
             }
             ActorObj.SummonData summon = actorBase.m_skillSummonList[index];
             if (actorBase.m_skillSummonList[index].deadthToKill)
             {
                 OnSummonDeath(actorBase.m_skillSummonList[index].entityid);
                 actorBase.m_skillSummonList.Remove(summon);
             }
             else
             {
                 index++;
             }
         }
     }
 }
Ejemplo n.º 12
0
        //选中monster
        public override void SelectTarget(ActorObj selObject)
        {
            ActorObj oldactor = m_SelectTargetObject;

            m_SelectTargetObject = selObject;
            OnSelectTarget(oldactor, m_SelectTargetObject);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 判断技能是否使用完毕,有连招的会继续使用连招。
        /// </summary>
        /// <param name="actor">角色对象。</param>
        /// <param name="skillid">技能编号。</param>
        /// <returns>是否使用完毕。</returns>
        public static bool IsCastSkillOver(ActorObj actor, int skillid)
        {
            if (actor.curActorState != ACTOR_STATE.AS_ATTACK)
            {
                return(true);
            }

            //如果在攻击状态没有动作,则视为技能施放完毕
            if (actor.GetComponent <Animation>().isPlaying == false && actor.m_bIsTower == false)
            {
                return(true);
            }

            //判断连招,是否组合技能
            ComposeSkillDesc desc = CoreEntry.gGameDBMgr.GetComposeSkillDesc(actor.curCastSkillID, skillid);

            if (desc != null)
            {
                StateParameter param = new StateParameter();
                param.state            = ACTOR_STATE.AS_ATTACK;
                param.skillID          = skillid;
                param.isComposeSkill   = true;
                param.composeSkillDesc = desc;

                //请求连招切换,能连招则认为此技能结束了
                bool bRet = actor.ComposeSkillCanCastSkill(param.composeSkillDesc.changeTime);
                return(bRet);
            }

            return(false);
        }
Ejemplo n.º 14
0
 /// <summary>
 /// 添加一个Actor
 /// </summary>
 /// <param name="actor"></param>
 public void AddActorObj(ActorObj actor)
 {
     if (actor is PlayerObj || actor is OtherPlayer)
     {
         if (!mPlayerList.Contains(actor))
         {
             mPlayerList.Add(actor);
         }
     }
     else if (actor is MonsterObj)
     {
         if (!mMonsterList.Contains(actor))
         {
             mMonsterList.Add(actor);
         }
     }
     else if (actor is NpcObj)
     {
         if (!mNPCList.Contains(actor))
         {
             mNPCList.Add(actor);
         }
     }
     else if (actor is PetObj)
     {
         if (!mPetList.Contains(actor))
         {
             mPetList.Add(actor);
         }
     }
 }
Ejemplo n.º 15
0
        /// <summary>
        /// 角色死亡。
        /// </summary>
        public void OnGameEventMonsterDeath(GameEvent ge, EventParameter parameter)
        {
            ActorObj   actor   = parameter.goParameter.GetComponent <ActorObj>();
            MonsterObj monster = actor as MonsterObj;

            if (monster == null)
            {
                return;
            }

            List <LuaTable> anis;

            if (!m_CacheMonsterAnimation.TryGetValue(monster.ConfigID, out anis))
            {
                return;
            }

            int map = MapMgr.Instance.EnterMapId;

            for (int i = 0; i < anis.Count; ++i)
            {
                LuaTable cfg = anis[i];
                if (cfg.Get <int>("monster") == MONSTER_TYPE_DIE)
                {
                    int sceneid = cfg.Get <int>("sceneid");
                    if (sceneid == 0 || sceneid == map)
                    {
                        TryPlayerCutScene(cfg);
                        break;
                    }
                }
            }
        }
Ejemplo n.º 16
0
        public void AddBuff(BuffData buffData, ActorObj TargetObj)
        {
            if (TargetObj != null)
            {
                //区分目标
                LuaTable desc = ConfigManager.Instance.Skill.GetBuffConfig(buffData.buffType);
                if (desc != null)
                {
                    if (TargetObj.GetBuff(buffData.BufferInstanceID) != null)
                    {
                        //Debug.LogError("重复BUFF  " + buffData.BufferInstanceID + "   " + buffData.buffType);
                        return;
                    }
                    TargetObj.Addbuff(buffData, TargetObj);

                    //  buffList.Add(buffData.BufferInstanceID, TargetObj);

                    buffList[buffData.BufferInstanceID] = TargetObj;
                    if (TargetObj.ServerID == CoreEntry.gActorMgr.MainPlayer.ServerID)
                    {
                        EventParameter msg = new EventParameter();
                        msg.longParameter = buffData.buffType;
                        // Debug.LogError("添加BUFF  " + buffData.BufferInstanceID + "   " + buffData.buffType);
                        CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_CC_ADDBUFF, msg);
                    }
                }
            }
        }
Ejemplo n.º 17
0
        void DisableTakeWayEffect()
        {
            ActorObj actorBase = null;

            foreach (int i in m_TakeAwayGameObjectMap.Keys)
            {
                if (m_TakeAwayGameObjectMap[i] != null)
                {
                    actorBase = m_TakeAwayGameObjectMap[i].GetComponent <ActorObj>();

                    if (actorBase != null)
                    {
                        actorBase.CanCurveMove();

                        if (m_param.bCanNotMoveWhenTakenAway)
                        {
                            actorBase.BeTakenAway          = false;
                            actorBase.IgnoredGravityMotion = false;
                            // Vector3 groundPos = BaseTool.instance.GetGroundPoint(actorBase.m_transform.position);
                            // actorBase.m_transform.position = groundPos;
                            actorBase.FallDown();
                        }
                    }
                }
            }

            m_TakeAwayGameObjectMap.Clear();
        }
Ejemplo n.º 18
0
        public override void Stop(bool isSendEvent)
        {
            if (m_eventMgr == null)
            {
                return;
            }
            m_dstPos = Vector3.zero;

            if (isSendEvent)
            {
                //todo:通知,移动停止
                EventParameter param = EventParameter.Get();
                param.goParameter = this.gameObject;

                m_eventMgr.TriggerEvent(GameEvent.GE_PLAYER_MOVE_STOP, param);
                //renwuzhixiangSetActive(false);
            }

            EventParameter param1 = EventParameter.Get();

            param1.objParameter = transform.position;

            ActorObj actor = gameObject.GetComponent <ActorObj>();

            if (actor && actor.IsMainPlayer())
            {
                if (m_eventMgr != null)
                {
                    if (MapMgr.Instance.InMainCity)
                    {
                        m_eventMgr.TriggerEvent(GameEvent.GE_PLAYER_MOVE_Arrive, param1);
                    }
                }
            }
        }
Ejemplo n.º 19
0
 private void OnRoleAttrInfo(GameEvent ge, EventParameter parameter)
 {
     MsgData_sRoleAttrInfoNotify data = parameter.msgParameter as MsgData_sRoleAttrInfoNotify;
     ActorObj obj = CoreEntry.gActorMgr.GetActorByServerID(data.RoleID);
     if (obj != null)
     {
         if (ArenaMgr.Instance.IsArena)//如果是竞技场 更新血量
         {
             CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_ARENA_HP_REFRESH, null);
         }
         obj.UpdateAttr(data.AttrList);
     }else //查看缓存中的数据
     {
         SceneObj so = mSceneCache.Find(o => { return o.ObjGuid == data.RoleID; });
         if(so != null && so.ObjType == EnEntType.EnEntType_Monster)
         {
             var msg = so.ObjData as MsgData_sSceneObjectEnterMonster;
             foreach(var attr in data.AttrList)
             {
                 var type = BaseAttr.GetBasicAttrTypeFromStatType(attr.AttrType);
                 switch(type)
                 {
                     case BasicAttrEnum.CurHP: msg.CurHp = attr.AttrValue; break;
                     case BasicAttrEnum.MaxHP: msg.MaxHp = attr.AttrValue; break;
                 }
             }
         }
     }
 }
Ejemplo n.º 20
0
        //int m_num = 1;

        //初始化
        public void Init(GameObject obj)
        {
            m_actorObject = obj;
            //m_ani = m_actorObject.GetComponent<Animation>();
            m_actor = (m_actorObject.GetComponent <ActorObj>());

            m_transform          = m_actorObject.transform;
            m_animationCurveData = m_actorObject.GetComponent <AnimationCurveData>();
            if (m_animationCurveData == null)
            {
                //LogMgr.LogError(obj.name + ":缺少动画曲线组件AnimationCurveData,可能将导致异常。美术请检查该模型!!!");
            }

            if (m_actor != null && m_actor != null)
            {
                m_curRadius = m_actor.GetColliderRadius();
            }
            else
            {
                LogMgr.LogError("Please Check m_actor:" + m_actor + " : " + m_actor);
            }

            //如果是PVP状态
            if (CoreEntry.gGameMgr.IsPvpState())
            {
                m_curRadius += 1.8f;
            }
        }
Ejemplo n.º 21
0
        protected override void OnInit(GameObject go)
        {
            ActorObj actorObj = go.GetComponent <ActorObj>();

            actorObj.OnDisplayGoChange += OnDisplayGoChange;
            OnDisplayGoChange(actorObj);
        }
Ejemplo n.º 22
0
    public void LookAt(GameObject target, ActionCallBack.LookAtFinishCallBack callback = null, float time = -1)
    {
        if (null == target)
        {
            return;
        }
        if (ActorObj == null)
        {
            return;
        }

        ActionCallBack acb = ActorObj.GetComponent <ActionCallBack>();

        if (ActorObj != null && acb != null)
        {
            acb.m_LookAtFinishCallBack = callback;
        }
        Hashtable args = new Hashtable();

        args.Add("time", time < 0? CalcRotateTime(ActorObj.transform, target.transform): time);
        args.Add("delay", 0.0f);
        args.Add("looktarget", target.transform.position);
        args.Add("oncomplete", "ActionLookAtFinishCallBack");
        args.Add("oncompleteparams", "end");
        args.Add("oncompletetarget", m_EntityObj);
        iTween.LookTo(ActorObj, args);
    }
Ejemplo n.º 23
0
 public void Recover(ActorObj actor)
 {
     for (int i = 0; i < skillGiftsList.Count; ++i)
     {
         skillGiftsList[i].Recover(actor);
     }
 }
Ejemplo n.º 24
0
    public void Attack(ActionCallBack.AttackFinishCallBack FinishCallBack = null,
                       ActionCallBack.PlayBeAttackOneStep hit_1           = null,
                       ActionCallBack.PlayBeAttackTwoStep hit_2           = null,
                       ActionCallBack.PlayBeAttackEffect eff         = null,
                       ActionCallBack.ShowChangePlayerInfo changeVal = null)
    {
        if (null == ActorObj)
        {
            return;
        }
//		PlayEntityAction( GlobalValue.ActionName , GlobalValue.Action_Attack );
        BattleActor self = Battle.Instance.GetActorByInstId(PlayerID);

        if (self == null)
        {
            return;
        }

        SetAnimationParam(self.attackAnim_, AnimatorParamType.APT_Trigger);
        ActionCallBack callback = ActorObj.GetComponent <ActionCallBack>();

        if (null == callback)
        {
            return;
        }
        callback.AttackFinish           = FinishCallBack;
        callback.m_PlayBeAttackOneStep  = hit_1;
        callback.m_PlayBeAttackTwoStep  = hit_2;
        callback.m_PlayBeAttackEffect   = eff;
        callback.m_ShowChangePlayerInfo = changeVal;
        hasActionCallBackToCall         = true;
    }
Ejemplo n.º 25
0
        /// <summary>
        /// 跨场景寻路
        /// </summary>
        /// <param name="destMapID">目的地图ID</param>
        /// <param name="destPosition">目的位置</param>
        public void StartPathFinder(int destMapID, Vector3 destPosition)
        {
            CoreEntry.gEventMgr.RemoveListener(GameEvent.GE_JOYSTICK_DOWN, OnJoyStickDown);
            bUserMul      = false;
            curMapID      = MapMgr.Instance.EnterMapId;
            targetMapID   = destMapID;
            targetPostion = destPosition;

            ActorObj ag = CoreEntry.gActorMgr.GetActorByServerID(MainRole.Instance.serverID);

            if (destMapID == curMapID)//同一个地图直接走过去
            {
                ActorObj actor = CoreEntry.gActorMgr.GetActorByServerID(MainRole.Instance.serverID);
                actor.MoveToPos(destPosition);


                ag.ReqRideHorse();

                return;
            }

            if (AnalysePath(curMapID, destMapID))
            {
                CoreEntry.gEventMgr.AddListener(GameEvent.GE_JOYSTICK_DOWN, OnJoyStickDown);//开始跨场景寻路才需要简体摇杆按下时间,判断是否打断

                curIndex = 0;

                ActorObj          actor     = CoreEntry.gActorMgr.GetActorByServerID(MainRole.Instance.serverID);
                SceneEntityConfig curPortal = mPortals[curIndex];

                bUserMul = actor.MoveToPos(curPortal.position);
                ag.ReqRideHorse();
            }
        }
Ejemplo n.º 26
0
    public void UpdateHandler()
    {
        //AnimatorStateInfo animatorState = m_EntityAnimator.GetCurrentAnimatorStateInfo(0);
        //if(animatorState.normalizedTime >= 1f)

        if (isPlayBack)
        {
            float newPlaybackTime = m_EntityAnimator.playbackTime + Time.deltaTime;
            if (newPlaybackTime > m_EntityAnimator.recorderStopTime)
            {
                newPlaybackTime = 0f;
                m_EntityAnimator.StopPlayback();
                isPlayBack = false;
                return;
            }
            m_EntityAnimator.playbackTime = newPlaybackTime;
        }

        if (stateList_ != null)
        {
            for (int i = 0; i < stateList_.Count; ++i)
            {
                if (stateList_[i].workingInst_ != null)
                {
                    BoxCollider box = ActorObj.GetComponent <BoxCollider>();
                    Vector3     pos = new Vector3(ActorObj.transform.position.x, ActorObj.transform.position.y, ActorObj.transform.position.z + box.center.z + box.size.z);
                    stateList_[i].workingInst_.transform.localPosition = pos;
                }
            }
        }
    }
Ejemplo n.º 27
0
        public override void Update()
        {
            if (m_actor != null && m_actorObject != null && m_curSkillID != 0 && m_actor.m_bRunToAttack)
            {
                ActorObj selObject = m_actor.GetSelTarget();
                if (selObject != null)
                {
                    float distance = Vector3.Distance(m_actorObject.transform.position, selObject.transform.position);
                    if (distance <= m_Attackdistance * 1.5f)// 适当增加攻击距离
                    {
                        m_actor.OnCastSkill(m_curSkillID);

                        m_actorObject = null;
                        m_curSkillID  = 0;
                    }
                    else
                    {
                        if (selObject != null)
                        {
                            float dist = Vector3.Distance(m_vNavPos, selObject.transform.position);
                            if (dist > 0.1f)
                            {
                                Vector3 vDis = selObject.transform.position - m_actor.transform.position;
                                vDis.Normalize();
                                m_vNavPos = m_actor.transform.position + vDis * m_Attackdistance;
                            }
                        }
                        m_actor.MoveToPos(m_vNavPos, false);

                        Debug.DrawLine(m_actor.transform.position, m_vNavPos, Color.red);
                    }
                }
            }
        }
Ejemplo n.º 28
0
 public void Recover(ActorObj m_actor)
 {
     OnExit(m_actor);
     OnEnter(m_actor);
     delayFrameForRecover = 2;
     isRecover            = true;
 }
Ejemplo n.º 29
0
        public override void Init()
        {
            if (this.gameObject.GetComponent <NavMeshAgent>() == null)
            {
                m_agent = this.gameObject.AddComponent <NavMeshAgent>();
            }
            else
            {
                m_agent = this.gameObject.GetComponent <NavMeshAgent>();
            }

            m_agent.enabled = false;

            m_agent.speed        = 6;
            m_agent.acceleration = 20; //启动速度

            m_transform = this.transform;
            m_eventMgr  = CoreEntry.gEventMgr;
            m_isRuning  = false;
            fRemainPath = 0.0f;
            nCount      = 1;

            m_ActorBase = this.gameObject.GetComponent <ActorObj>();

            m_agent.speed = m_ActorBase.mBaseAttr.Speed;
        }
Ejemplo n.º 30
0
        // Use this for initialization
        void Start()
        {
            CancelInvoke("Start");

            if (m_bossDeathFromSkyDesc == null)
            {
                return;
            }

            //m_skillBase = this.transform.root.gameObject.GetComponent<SkillBase>();

            m_aimActorObject = m_skillBase.m_actor.GetAttackObj();
            if (m_aimActorObject == null)
            {
                m_aimActorObject = m_skillBase.m_hitActor;
            }

            //影子去掉
            m_skillBase.m_actor.HideBlobShadow();

            //拉到空中
            Invoke("RiseToSky", m_bossDeathFromSkyDesc.riseTime);

            //下落准备,位移恢复
            Invoke("PrepareDownTime", m_bossDeathFromSkyDesc.prepareDownTime);

            //落到地面,触发事件
            Invoke("DownOnGround", m_bossDeathFromSkyDesc.downTime);
        }