public override BaseEntity SetTarget() { var cols = Physics.OverlapSphere(transform.position, searchRange, targetLayer); if (cols.Length == 0) { if (targetMoveType == DICE_MOVE_TYPE.GROUND || targetMoveType == DICE_MOVE_TYPE.ALL) { return(ActorProxy.GetEnemyTowerOrBossEgg()); } else { return(null); } } Collider firstTarget = null; var distance = float.MaxValue; foreach (var col in cols) { var bs = col.GetComponentInParent <BaseEntity>(); var m = bs as Minion; if (bs == null || bs.isAlive == false || (m != null && m.isCloacking) || (bs.CompareTag("Minion_Ground") && Vector3.Distance(bs.transform.position, transform.position) > 1.5f)) { continue; } var sqr = Vector3.SqrMagnitude(transform.position - col.transform.position); if (sqr < distance) { distance = sqr; firstTarget = col; } } if (firstTarget == null && animator != null) { animator.SetTrigger(AnimationHash.Idle); } if (firstTarget) { return(firstTarget.GetComponentInParent <BaseEntity>()); } else { return(ActorProxy.GetEnemyTowerOrBossEgg()); } }
protected override IEnumerator Cast() { target = ActorProxy.GetEnemyTowerOrBossEgg(); if (target == null) { ActorProxy.Destroy(); yield break; } var rocketAction = new RocketAction(); RunningAction = rocketAction; yield return(rocketAction.ActionWithSync(ActorProxy, target.ActorProxy)); RunningAction = null; }
public override BaseEntity SetTarget() { var cols = Physics.OverlapSphere(transform.position, searchRange, friendlyLayer); Collider firstTarget = null; Collider closeToTarget = null; var closeToDistance = 0f; var distance = float.MaxValue; var oldHp = 1f; foreach (var col in cols) { if (col != null && col.CompareTag($"Minion_Ground") && col.gameObject != gameObject) { var m = col.GetComponentInParent <Minion>(); var dis = Vector3.Distance(transform.position, col.transform.position); if (dis > closeToDistance && m != null && m.GetType() != typeof(Minion_Healer) && m.GetType() != typeof(Minion_Saint)) { closeToDistance = dis; closeToTarget = col; } //KZSee: // if (hp < 1f && dis < distance) // { // oldHp = hp; // firstTarget = col; // distance = dis; // } } } if (firstTarget != null) { return(firstTarget.GetComponentInParent <BaseEntity>()); } if (closeToTarget != null) { return(closeToTarget.GetComponentInParent <BaseEntity>()); } else { return(ActorProxy.GetEnemyTowerOrBossEgg()); } }
public override BaseEntity SetTarget() { target = ActorProxy.GetEnemyTowerOrBossEgg(); if (target == null) { return(null); } if (isAlive) { if (Vector3.Distance(transform.position, target.transform.position) < 2f) { Bomb(); } } return(target); }
public override BaseEntity SetTarget() { return(ActorProxy.GetEnemyTowerOrBossEgg()); }
public virtual BaseEntity SetTarget() { if (_attackedTarget != null && _attackedTarget.CanBeTarget()) { return(_attackedTarget); } else if (ActorProxy != null && ActorProxy.isTaunted) { ActorProxy.DisableBuffEffect(BuffType.Taunted); } if (ActorProxy == null) { return(null); } if (ActorProxy.isInAllyCamp) { var position = transform.position; var target = ActorProxy.GetEnemies().Where(e => e.ActorProxy.isInEnemyCamp) .OrderBy(e => (e.transform.position - position).sqrMagnitude).FirstOrDefault(); if (target != null) { return(target); } } var cols = Physics.OverlapSphere(transform.position, searchRange, targetLayer); Minion closestTarget = null; var distance = float.MaxValue; foreach (var col in cols) { var bs = col.GetComponentInParent <Minion>(); if (bs == null || !bs.CanBeTarget()) { continue; } var sqr = Vector3.SqrMagnitude(transform.position - col.transform.position); if (sqr < distance) { distance = sqr; closestTarget = bs; } } if (closestTarget != null) { return(closestTarget); } if (targetMoveType == DICE_MOVE_TYPE.GROUND || targetMoveType == DICE_MOVE_TYPE.ALL) { return(ActorProxy.GetEnemyTowerOrBossEgg()); } return(null); }