public void Attack(CharecterStats targetStats) { if (attackCoolDown <= 0f) { StartCoroutine(DoDamage(targetStats, attackDelay)); if (OnAttack != null) { OnAttack(); } attackCoolDown = 1f / attackSpeed; } }
// Update is called once per frame void Update() { float distance = Vector3.Distance(target.position, transform.position); if (distance <= lookRedius) { agent.SetDestination(target.position); if (distance <= agent.stoppingDistance) { CharecterStats targetStat = target.GetComponent <CharecterStats>(); if (targetStat != null) { combat.Attack(targetStat); } FaceTarget(); } } }
IEnumerator DoDamage(CharecterStats stats, float delay) { yield return(new WaitForSeconds(delay)); stats.takeDamage(myStats.damage.GetValue()); }
private void Start() { myStats = GetComponent <CharecterStats>(); }
private void Start() { playerManager = PlayerManager.instence; myStats = GetComponent <CharecterStats>(); }