示例#1
0
    public float knockbackAmount = 5f;  // Fuerza de contacto que aplica

    /// <summary>
    /// Al entrar en contacto con el jugador, le resta vida y le empuja
    /// </summary>
    void OnCollisionStay2D(Collision2D other)
    {
        Knockback knockback = other.gameObject.GetComponent <Knockback>();

        if (other.gameObject == GameManager.instance.player && other.gameObject.GetComponent <PlayerHealth>().invulnerability == 0f)
        {
            GameManager.instance.onPlayerTookDamage();
            if (knockback != null)
            {
                knockback.TakeKnockback(-other.contacts[0].normal, knockbackAmount);
            }
        }
    }
示例#2
0
    private void CheckCollision()
    {
        Collider2D[]    results       = new Collider2D[5];
        ContactFilter2D contactFilter = new ContactFilter2D();

        contactFilter.NoFilter();
        int numberOfResults = coll2D.OverlapCollider(contactFilter, results);
        int current         = 0;

        while (current < numberOfResults)
        {
            //check for a layer to ignore
            if (results[current].gameObject.layer == ignoreLayer)
            {
                current++;
                return;
            }

            //check for health component
            Health health = results[current].gameObject.GetComponent <Health>();
            if (health != null)
            {
                health.TakeDamage(damage);
            }
            //check for knockback component
            Knockback knockback = results[current].gameObject.GetComponent <Knockback>();
            if (knockback != null)
            {
                knockback.TakeKnockback(transform.position, knockbackForce);
            }
            current++;
        }
        if (destroyOnCollision && numberOfResults > 0)
        {
            Explode explode = gameObject.GetComponent <Explode>();
            if (explode != null)
            {
                explode.Activate();
            }
            else
            {
                Destroy(this.gameObject);
            }
        }
    }