예제 #1
0
        /// <summary>
        /// 更新大血条
        /// </summary>
        private void UpdateBossBlood()
        {
            if (null == BossBlood)
            {
                return;
            }

            JitterBossBlood();

            for (int i = 0; i < BossBloodProityList.Count; i++)
            {
                EntityView ev = BossBloodProityList[i];
                if (null == ev)
                {
                    continue;
                }
                if (!ev.gameObject)
                {
                    continue;
                }
                if (ev.BossBloodShowDistance > 0)
                {
                    if (bossBloodTarget == null && EntityFactory.MainHero != null)
                    {
                        bossBloodTarget = EntityFactory.MainHero.transform;
                    }

                    float dis = Vector3.SqrMagnitude(bossBloodTarget.position - ev.gameObject.transform.position);
                    if (dis < ev.BossBloodShowDistance * ev.BossBloodShowDistance)
                    {
                        if (ev.CampFlag != SPELL.CampFlag.CampFlag_Friend && ev.CampFlag != SPELL.CampFlag.CampFlag_Self)
                        {
                            EntityEnterBossBloodDistance(ev.ID);
                        }
                        break;
                    }
                    else
                    {
                        EntityLeaveBossBloodDistance(ev.ID);
                    }
                }
            }

            if (null != BossBlood && CurrentBossBloodHostID > 0)
            {
                EntityView ev = EntityFactory.getEntityViewByID(CurrentBossBloodHostID);
                if (ev != null && ev.StateMachine != null)
                {
                    UpdateBossBloodAndTowerSoldier(ev, ev.StateMachine.GetVisible());
                }
                else
                {
                    UpdateBossBloodAndTowerSoldier(ev, false);
                }

                BossBlood.OnUpdate();
            }
        }
예제 #2
0
    /// <summary>
    /// 更新BOSS血条
    /// </summary>
    private static void UpdateBossBlood()
    {
        if (!EntityFactory.MainHero)
        {
            return;
        }


        JitterBossBlood();

        //检测是否有boss血条进入到显示范围
        for (int i = 0; i < BossBloodProityList.Count; i++)
        {
            EntityView gv = BossBloodProityList[i];
            if (null == gv)
            {
                continue;
            }
            if (!gv.gameObject)
            {
                continue;
            }
            if (gv.BossBloodShowDistance > 0)
            {
                float dis = Vector3.SqrMagnitude(EntityFactory.MainHero.transform.position - gv.gameObject.transform.position);
                if (dis < gv.BossBloodShowDistance * gv.BossBloodShowDistance)
                {
                    if (gv.CampFlag != SPELL.CampFlag.CampFlag_Friend &&
                        gv.CampFlag != SPELL.CampFlag.CampFlag_Self
                        )
                    {
                        EntityEnterBossBloodDistance(gv.ID);
                    }

                    break;
                }
                else
                {
                    EntityLeaveBossBloodDistance(gv.ID);
                }
            }
        }

        if (null != BossBlood)
        {
            BossBlood.OnUpdate();
        }
    }