//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()); }
//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()); }