protected override bool Execute() { if (reviveTarget != null && reviveTarget.Revive()) { detectVolume.Remove(reviveTarget.gameObject); } return(true); }
private void Execute() { state = AbilityState.Executing; timer = executeTime; if (reviveTarget != null && reviveTarget.Revive()) { detectVolume.Remove(reviveTarget.gameObject); } }
void Update() { if (unitModel.IsDead) { return; } float h_axis = Input.GetAxisRaw("Horizontal"); float v_axis = Input.GetAxisRaw("Vertical"); bool useRevive = Input.GetButtonDown("Revive"); bool usePotion = Input.GetButtonDown("Potion"); Quaternion camRot = Quaternion.AngleAxis(gameCamera.transform.rotation.eulerAngles.y, Vector3.up); unitMover.Move(camRot * new Vector3(h_axis, 0f, v_axis)); if (useRevive && unitModel.mana.amount >= reviveManaCost && revivableCorpses.Count > 0) { UnitCorpse closestCorpse = null; float closestDist = -1f; foreach (GameObject corpse in revivableCorpses) { UnitCorpse unitCorpse = corpse.GetComponent <UnitCorpse>(); if (!unitCorpse.CanRevive) { continue; } float dist = (corpse.transform.position - transform.position).magnitude; if (closestCorpse == null || dist < closestDist) { closestCorpse = unitCorpse; closestDist = dist; } } if (closestCorpse != null && closestCorpse.Revive()) { unitModel.TryDrainMana(reviveManaCost); revivableCorpses.Remove(closestCorpse.gameObject); } } }