示例#1
0
 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());
     }
 }
示例#2
0
    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());
        }
    }
示例#3
0
    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);
        }
    }
示例#4
0
    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);
    }
示例#5
0
    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);
    }