void OnTriggerEnter(Collider other) { if (other.tag == "Player") { float dotProductValue; Vector3 playerDir; playerDir = (GameController.instance.Player.transform.position - this.transform.position).normalized; dotProductValue = Vector3.Dot(playerDir, transform.forward); if (dotProductValue >= Mathf.Cos(Mathf.Deg2Rad * angle)) { //damage player isInZone = true; Debug.Log("Player in the damage zone"); other.GetComponent <PlayerHealthScript>().Damage((int)damage); StartCoroutine(EnemyCombat.KnockbackEntity(GameController.instance.Player.gameObject, this.gameObject.transform.position, playerKnockBackSpeed)); } else { isInZone = false; } } }
public void Explode() { Vector3 epicenter = this.gameObject.transform.position; List <EnemyAI> targetObjects = new List <EnemyAI>(); Collider[] colliders = Physics.OverlapSphere(epicenter, enemyCombat.explosionRange, 1 << 8); foreach (Collider targetEntity in colliders) { targetObjects.Add(targetEntity.gameObject.GetComponent <EnemyAI>()); } /* * foreach (EnemyAI enemy in EnemySpawner.instance.enemiesInTheScene) * { * if (GetPreciseDistance(this.transform.position, enemy.transform.position) < enemyCombat.explosionRange && enemy.gameObject!=this.gameObject) * { * * targetObjects.Add(this); * * Debug.Log("adding enemies to explosion list "); * } * } * foreach (EnemyAI enemy in EnemySpawner.instance.UtilityStatesInTheScene) * { * if (GetPreciseDistance(this.transform.position, enemy.transform.position) < enemyCombat.explosionRange && enemy.gameObject!=this.gameObject) * { * targetObjects.Add(this); * } * } */ Debug.Log(targetObjects); explosionObjects = targetObjects; foreach (EnemyAI target in targetObjects) { Debug.Log(target.gameObject); target.enemyHealthSystem.Damage(4); if (target.canBeKnocked) { StartCoroutine(EnemyCombat.KnockbackEntity(target.gameObject, epicenter, 20, 0.3f)); } } DestroyUtility(); }
private void OnTriggerEnter(Collider other) { if (other.tag == "Player") { //Damage the player Debug.Log("Player Hit by projectile"); StartCoroutine(EnemyCombat.KnockbackEntity(GameController.instance.Player.gameObject, this.gameObject.transform.position, playerKnockBackSpeed)); GameController.instance.Player.GetComponent <PlayerHealthScript>().Damage((int)projectileDamage); Destroy(this.gameObject); } else if (other.tag != "Enemy") { //Add some sort of minor explosion effect Destroy(this.gameObject); } }