private void FindNearTarget(EffectLinkBranch go) { if (mLinks.Count < mBounceAmount) { FindNearbyTarget(go); } }
private void GetNextLink(EffectLinkBranch go) { mCurMonsters.Clear(); mCurMonsters.Add(go.mHitTargetCs.gameObject); Hit(mCurMonsters); FindNearTarget(go); }
private void DestoryMe(EffectLinkBranch go) { if (mLinks.LastIndexOf(go) == mLinks.Count - 1) { for (int i = 0; i < mLinks.Count; i++) { Destroy(mLinks[i].gameObject); } } }
private void FindNearbyTarget(EffectLinkBranch go) { List <GameObject> mAllTarget = GetTargetByCondition(CheckNearbyHitCondition, distance, go.mHitTargetCs.transform); GameObject target = null; if (mAllTarget != null && mAllTarget.Count > 0) { mAllTarget.Sort((a, b) => { float aDir = Vector3.Distance(go.mHitTargetCs.transform.position, a.transform.position); float bDir = Vector3.Distance(go.mHitTargetCs.transform.position, b.transform.position); return(Mathf.FloorToInt(aDir - bDir)); }); target = mAllTarget[0]; } if (target != null) { AddEffectLinkBranch(go, target); } }
private void AddEffectLinkBranch(EffectLinkBranch go, GameObject target) { EffectLinkBranch linkBranch; if (mLinks.Count == 0) { linkBranch = gameObject.AddComponent <EffectLinkBranch>(); linkBranch.destoryTime = destoryTime; linkBranch.Init(mCurSkillNode, mHitTargetCs.gameObject, attackerTrans, null); mAllMonsters.Add(mHitTargetCs.gameObject); } else { linkBranch = NGUITools.AddChild(transform.parent.gameObject, go.gameObject).GetComponent <EffectLinkBranch>(); EffectLink link = linkBranch.GetComponent <EffectLink>(); Destroy(link); linkBranch.destoryTime = destoryTime; linkBranch.Init(mCurSkillNode, target, go.mHitTargetCs.transform, null); mAllMonsters.Add(target); } linkBranch.mNextLink = GetNextLink; linkBranch.mLastDestory = DestoryMe; mLinks.Add(linkBranch); }