protected override void Attack(DamageableGameObject target) { GameObject projectile = Instantiate(projectilePrefab, castTransform.position, Quaternion.identity) as GameObject; ProjectileController controller = projectile.GetComponent <ProjectileController>(); controller.Init(target, ofenseStats.damage); controller.onAttackStrike += onAttackStrike; }
public void AttackOnCoolDown(DamageableGameObject target) { if (cooldown <= 0f) { cooldown = 1f / stats.attackSpeed; target.TakeDamage(stats.damage); } }
void OnTriggerExit(Collider other) { if (enemyMask.Contains(other.gameObject.layer)) { DamageableGameObject obj = other.transform.parent.GetComponent <DamageableGameObject>(); enemiesToAttack.Remove(obj); } }
protected override void Attack(DamageableGameObject target) { target.TakeDamage(ofenseStats.damage); if (onAttackStrike != null) { onAttackStrike(target.damageTransform.position); } }
public void AttackOnCooldown(DamageableGameObject target) { if (cooldown <= 0f) { cooldown = 1f / ofenseStats.attackSpeed; target.TakeDamage(ofenseStats.damage); if (onAttackHit != null) { onAttackHit(target.transform.position); } } }
public void AttackOnCooldown(DamageableGameObject target) { if (cooldown <= 0f) { cooldown = 1f / ofenseStats.attackSpeed; if (onAttackStart != null) { onAttackStart(); } StartCoroutine(AttackAfterDelay(target, attackDelay)); } }
void OnTriggerEnter(Collider other) { if (enemyMask.Contains(other.gameObject.layer)) { DamageableGameObject obj = other.transform.parent.GetComponent <DamageableGameObject>(); if (!enemiesToAttack.Contains(obj)) { enemiesToAttack.Add(obj); obj.onDied += () => { enemiesToAttack.Remove(obj); }; } } }
IEnumerator AttackAfterDelay(DamageableGameObject target, float delay) { yield return(new WaitForSeconds(delay)); if (target != null) { if (onAttackCast != null) { onAttackCast(castTransform.position); } Attack(target); } }
void Awake() { Canvas canvas = FindWorldCanvas(); if (canvas == null) { throw new Exception("A WorldSpace canvas was needed"); } cam = Camera.main.transform; healthUI = Instantiate(healthUIPrefab, canvas.transform); healthSlider = healthUI.transform.GetChild(0).GetComponent <Image>(); damageable = GetComponent <DamageableGameObject>(); damageable.onHealthChanged += UpdateHealth; damageable.onDied += DestroyHealth; }
protected virtual void Awake() { if (gameObject.tag != "Enemy") { obj = GameObject.FindWithTag("Enemy"); } else { obj = GameObject.FindWithTag("Player"); } if (obj != null) { enemyDamageable = obj.GetComponent <DamageableGameObject>(); } agent = GetComponent <NavMeshAgent>(); enemyMask = LayerMask.GetMask(enemyLayers); if (castTransform == null) { castTransform = transform; } }
public void Init(DamageableGameObject target, int damage) { this.target = target; this.damage = damage; isInit = true; }
protected abstract void Attack(DamageableGameObject target);