private void DoAttack(AIUnit unit) { unit.CDTimer += unit.DeltaT; if (unit.TargetPlayerHealth == null) { return; } if (Vector3.Distance(unit.transform.position, unit.TargetPlayerHealth.transform.position) < unit.AttackRange) { unit.WalkAnim = false; if (unit.CDTimer >= unit.AttackCD && unit.AttackEnemy == true) { if (unit.TargetPlayerHealth != null && unit.TargetPlayerHealth.MyHealth > 0) { if (unit._MinionType == MinionType.Ghost && unit.TargetPlayerHealth != null) { unit.Agent.transform.LookAt(unit.TargetPlayerHealth.transform.position); MinionRangeAttack Attack = unit.GetComponent <MinionRangeAttack>(); if (unit.TargetPlayerHealth != null) { unit.AnimController.SetTrigger("IsAttacking"); Attack.RangeAttack(unit.TargetPlayerHealth.transform.position); unit.CDTimer = 0; } } else if (unit._MinionType == MinionType.Golem && unit.TargetPlayerHealth != null && unit.CDTimer >= unit.AttackCD) { unit.CDTimer = 0; unit.WalkAnim = false; unit.Agent.transform.LookAt(unit.TargetPlayerHealth.transform.position); unit.AttackCount = (unit.AttackCount + 1) % 3; unit.AnimController.SetInteger("AttackState", unit.AttackCount); unit.AnimController.SetTrigger("IsAttacking"); unit.StartCoroutine(unit.SetAnimWalking()); } else if (unit._MinionType == MinionType.Mummy && unit.TargetPlayerHealth != null) { unit.Agent.transform.LookAt(unit.TargetPlayerHealth.transform.position); // Make a random attack animation int randomAttack = Random.Range(1, 3); unit.AnimController.SetInteger("AttackState", randomAttack); unit.AnimController.SetTrigger("IsAttacking"); // unit.SendRPC_Damage(); unit.StartCoroutine(unit.SetAnimWalking()); unit.CDTimer = 0; } } else { unit.TargetPlayerHealth = null; } } } }