public override void TakeDamage(int damageAmount, Vector2 hitPosition, Vector2 hitDirection) { HitManager.SpawnHitEffect(hitPosition, hitDirection, EffectType.Blood); health -= damageAmount; if (health <= 0) { controller.SetSimulated(false); animator.SetTrigger("Dead"); inputManager.enabled = false; characterState.enabled = false; StartCoroutine(EnemyDestruction()); } }
public override void TakeDamage(int damageAmount, Vector2 hitPosition, Vector2 hitDirection) { HitManager.SpawnHitEffect(hitPosition, hitDirection, EffectType.Blood); health -= damageAmount; if (health <= 0 && !GameManager.GetInstance().godModeEnabled) { controller.SetSimulated(false); animator.SetTrigger("Die"); animator.SetBool("Dead", true); inputManager.enabled = false; characterState.enabled = false; EventManager.TriggerEvent(Constants.PlayerDeathEvent); StartCoroutine(AfterPlayerDeath()); } }
void OnTriggerEnter2D(Collider2D other) { if (!targetHitted && other.CompareTag(targetTag)) { targetHitted = true; var enemy = other.gameObject.GetComponent <Character>(); enemy.TakeDamage(damage, transform.position, flyDirection); Hit(); } else if (other.CompareTag("SolidObject")) { Hit(); HitManager.SpawnHitEffect(transform.position, flyDirection, EffectType.SolidObjectHit); } }
protected override IEnumerator EnemyDestruction() { yield return(new WaitForSeconds(destructionDelay)); HitManager.SpawnHitEffect(transform.position, Vector3.right, EffectType.BombExplosion); HitManager.SpawnHitEffect(transform.position + new Vector3(-0.4f, -0.6f, 0.0f), Vector3.left, EffectType.Blood); HitManager.SpawnHitEffect(transform.position + new Vector3(-0.4f, 0.0f, 0.0f), Vector3.left, EffectType.Blood); HitManager.SpawnHitEffect(transform.position + new Vector3(-0.4f, 0.6f, 0.0f), Vector3.left, EffectType.Blood); HitManager.SpawnHitEffect(transform.position + new Vector3(0.4f, -0.6f, 0.0f), Vector3.right, EffectType.Blood); HitManager.SpawnHitEffect(transform.position + new Vector3(0.4f, 0.0f, 0.0f), Vector3.right, EffectType.Blood); HitManager.SpawnHitEffect(transform.position + new Vector3(0.4f, 0.6f, 0.0f), Vector3.right, EffectType.Blood); EventManager.TriggerEvent(Constants.DeactivatePlayerControlEvent); EventManager.TriggerEvent(Constants.ShowCreditsEvent); Destroy(this.gameObject); }
void DetonateBomb() { var hittedCharacters = new HashSet <int>(); _rigidbody2D.simulated = false; _rigidbody2D.velocity = Vector2.zero; HitManager.SpawnHitEffect(transform.position, Vector3.right, EffectType.BombExplosion); var colliders = Physics2D.OverlapCircleAll(transform.position, detonationRadius); for (int i = 0; i < colliders.Length; i++) { var character = colliders[i].GetComponent <Character>(); if (character && !hittedCharacters.Contains(character.gameObject.GetInstanceID())) { var raycastHit = Physics2D.Raycast(transform.position, character.transform.position - transform.position, 2 * detonationRadius); character.TakeDamage(damage, raycastHit.point, -raycastHit.normal); hittedCharacters.Add(character.gameObject.GetInstanceID()); } } Destroy(gameObject); }