//is only called after establishing this object should be hit IEnumerable <WaitForSeconds> GiveDamage(GameObject toAttack, Action onFinished) { bool hasTarget = true; ActiveObjectController activeControllerTarget = toAttack.GetComponent <ActiveObjectController>(); PassiveObjectController passiveControllerTarget = toAttack.GetComponent <PassiveObjectController>(); while (hasTarget) { if (activeControllerTarget) { activeControllerTarget.Hit(activeObjectModell.attackDamage); if (!activeControllerTarget.IsAlive()) { hasTarget = false; activeObjectModell.ResetTargetToNull(); } else { yield return(new WaitForSeconds(activeObjectModell.attackEveryXSecond)); } } else if (passiveControllerTarget) { passiveControllerTarget.Hit(activeObjectModell.attackDamage); if (!passiveControllerTarget.IsAlive()) { hasTarget = false; activeObjectModell.ResetTargetToNull(); } else { yield return(new WaitForSeconds(activeObjectModell.attackEveryXSecond)); } } } // activeObjectModell.ResetTargetToNull(); // Debug.Log("ACTIVE OBJECT MODEL: reset target to null"); onFinished(); SearchForTarget(); }
public void ExecuteCommand(Command command, PassiveObjectController obj) { command.Execute(obj); _commandHistory.Push(command); }
// Start is called before the first frame update public abstract void Execute(PassiveObjectController obj);
public override void Execute(PassiveObjectController obj) { obj.RotateForward(); }
public override void Execute(PassiveObjectController obj) { obj.RotateRight(); }
public override void Execute(PassiveObjectController obj) { // obj.Translate(Vector3.right * 100 * Time.deltaTime * -1); obj.RotateLeft(); }