public IEnumerator Attack() { float startTime = Time.time; yield return(new WaitForFixedUpdate()); while (!SF.GetWithinRange(transform.position, PlayerController.instance.transform.position, attackDistance)) { controller.Move(PlayerController.instance.transform.position); yield return(new WaitForFixedUpdate()); } controller.LookAt(PlayerController.instance.transform.position); // Start Charge controller.attacking = true; sr.color = chargeColor; yield return(new WaitForSeconds(attackChargeTime)); // Attack PerformAttack(); while (controller.attacking) { yield return(null); } sr.color = baseColor; }
public void MaintainDistance() { if (!SF.GetWithinRange(transform.position, PlayerController.instance.transform.position, targetDistanceMax)) { controller.Move(PlayerController.instance.transform.position); } else if (SF.GetWithinRange(transform.position, PlayerController.instance.transform.position, targetDistanceMin)) { controller.MoveAway(PlayerController.instance.transform.position); } }
public override bool TryAction() { if (minionControl.target != null && SF.GetWithinRange(transform.position, minionControl.target.transform.position, 1.5f)) { Attack(); return(true); } else { return(false); } }
void Update() { if (PlayerController.localPlayer != null && SF.GetWithinRange(PlayerController.localPlayer.transform.position, transform.position, 1.5f)) { if (Input.GetKeyDown("e")) { if (inventoryObj.activeInHierarchy && currentChest == this) { CloseInventory(); } else if (currentChest == null) { DisplayInventory(); } } } else if (currentChest == this) { CloseInventory(); } }
public override void TryMove() { if (Input.GetKey(KeyCode.Mouse0)) { RaycastHit hit; int layerMask = ~(1 << gameObject.layer); // Ignore gameObject.layer if (SF.MouseRaycast(out hit, layerMask) && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject() && !SF.GetWithinRange(hit.point, transform.position, .2f) && !PointerIconCtrl.IsActive()) { if (Input.GetKey(KeyCode.LeftCommand)) { targetMove = true; } else if (!targetMove) { Move(hit.point); } if (targetMove) { targetMovePos = hit.point; } } else { SetMoving(relativeMoveBone.transform.position); } } else if (targetMove) { Move(targetMovePos); if (SF.GetWithinRange(transform.position, targetMovePos, .5f) || Input.GetKeyDown(KeyCode.Mouse0)) { targetMove = false; } } else { SetMoving(relativeMoveBone.transform.position); } }
public IEnumerator Heal() { EnemyController healTarget = GetHealTarget(); while (healTarget != null && !SF.GetWithinRange(transform.position, healTarget.transform.position, healDistance)) { controller.Move(healTarget.transform.position); yield return(new WaitForFixedUpdate()); } if (healTarget != null) { sr.color = healChargeColor; yield return(new WaitForSeconds(attackChargeTime)); if (healTarget != null) { // Heal healTarget.Heal(healAmount); } sr.color = baseColor; } }
public override void TryMove() { if (target == null) { foreach (Collider coll in Physics.OverlapSphere(transform.position, 10f)) { Rigidbody rb = coll.attachedRigidbody; if (rb != null && rb.tag == "Team2" && rb.gameObject.layer == 8) { target = coll.attachedRigidbody.gameObject.GetComponent <Targeting>().targetableObj; targeting.SetTarget(target); } } } else if (target != null && !SF.GetWithinRange(transform.position, target.transform.position, 1f)) { Move(target.transform.position); } else { SetMoving(transform.position); } }
void Update() { if (hasAuthority) { if (PlayerController.localPlayer != null && SF.GetWithinRange(PlayerController.localPlayer.transform.position, transform.position, 3f)) { if (Input.GetKeyDown("e")) { if (baseMenuObj.activeInHierarchy) { baseMenuObj.SetActive(false); } else { baseMenuObj.SetActive(true); } } } else { baseMenuObj.SetActive(false); } } }