Example #1
0
        //class objectMoveInfo
        //{
        //    public GameObject obj;
        //    public Vector3 srcPos;
        //};
        //private List<objectMoveInfo> m_aimObjectList = new List<objectMoveInfo>();

        //private static GameObject mCenterObj;

        void DoFocusAction()
        {
            //计算位移距离
            FunDamageNode fun = m_oneDamageInfo.damageNode.funDamage;

            //聚怪中心点
            Vector3 centerPos = m_transform.position + m_transform.forward.normalized * fun.offDistance;


            //中间是否有空气墙
            Vector3 wallPos = CoreEntry.gBaseTool.GetWallHitPoint(m_transform.position, centerPos);

            if (!wallPos.Equals(centerPos))
            {
                //存在空气墙
                Vector3 dist = wallPos - m_transform.position;
                dist = dist * 0.9f;
                //Vector3 wallGroundPos = CoreEntry.gBaseTool.GetGroundPoint(m_transform.position + dist);
                centerPos = CoreEntry.gBaseTool.GetGroundPoint(centerPos);
            }

            if (centerPos.Equals(Vector3.zero))
            {
                centerPos = m_transform.position;
            }

            //需要聚集的怪物
            List <ActorObj> actors = CoreEntry.gActorMgr.GetAllMonsterActors();

            foreach (ActorObj actor in actors)
            {
                //对IOS出现怪物不动 报错的异常  进行错误处理
                if (GameLogicMgr.checkValid(actor.gameObject) == false)
                {
                    continue;
                }

                ActorObj actorBase = actor;
                if (!m_skillBase.m_actor.IsAimActorType(actorBase))
                {
                    continue;
                }

                //伤害对象
                if (CoreEntry.gBaseTool.IsPointInCircleXZ(centerPos, actor.transform.position, fun.radius, 1f))
                {
                    //isSkillSuccess = true;

                    Vector3 distance = m_transform.position - actor.transform.position;
                    float   len      = distance.magnitude;
                    distance = m_transform.position + distance;

                    distance = CoreEntry.gBaseTool.GetGroundPoint(distance);
                    TweenPositionY.Begin(actor.gameObject, 0.6f, distance, len);
                }
            }

            StartCoroutine(destroyBox());
        }
Example #2
0
        //class objectMoveInfo
        //{
        //    public GameObject obj;
        //    public Vector3 srcPos;
        //};

        void DoFocusAction()
        {
            //计算位移距离
            FunDamageNode fun = m_oneDamageInfo.damageNode.funDamage;

            //聚怪中心点
            Vector3 centerPos = m_transform.position + m_transform.forward.normalized * fun.offDistance;

            //中间是否有空气墙
            Vector3 wallPos = CoreEntry.gBaseTool.GetWallHitPoint(m_transform.position, centerPos);

            if (!wallPos.Equals(centerPos))
            {
                //存在空气墙
                Vector3 dist = wallPos - m_transform.position;
                dist = dist * 0.9f;
                //Vector3 wallGroundPos = CoreEntry.gBaseTool.GetGroundPoint(m_transform.position + dist);
                centerPos = CoreEntry.gBaseTool.GetGroundPoint(centerPos);
            }

            if (centerPos.Equals(Vector3.zero))
            {
                centerPos = m_transform.position;
            }

            //需要聚集的怪物
            List <ActorObj> actors = CoreEntry.gActorMgr.GetAllMonsterActors();

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


                //塔不没有受击
                MonsterObj monsterObj = obj.GetComponent <MonsterObj>();
                if (monsterObj && monsterObj.m_bIsTower)
                {
                    continue;
                }

                //bool isSkillSuccess = false;

                if (!m_skillBase.m_actor.IsAimActorType(actorBase))
                {
                    continue;
                }

                // 有霸体的不能被拉动
                if (actorBase.IsActorEndure())
                {
                    continue;
                }

                //伤害对象
                if (CoreEntry.gBaseTool.IsPointInCircleXZ(centerPos, obj.transform.position, fun.radius, 1f))
                {
                    //isSkillSuccess = true;
                    Go.to(obj.transform, 0.4f, new GoTweenConfig().position(centerPos));
                }
            }

            StartCoroutine(destroyBox());
        }