Esempio n. 1
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        enemyStats enemy = collision.collider.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            if (rb.velocity.magnitude > initialVelocity / speedRatio)
            {
                enemy.changeHealth(-damage);
            }
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 2
0
    private void OnCollisionStay2D(Collision2D collision)
    {
        enemyStats enemy = collision.collider.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            enemy.changeHealth(-damage);
            if (oneHit)
            {
                Physics2D.IgnoreCollision(collision.otherCollider, GetComponent <Collider2D>());
            }
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 3
0
    private void OnTriggerStay2D(Collider2D collision)
    {
        enemyStats enemy = collision.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            enemy.changeHealth(-damage);
            if (oneHit)
            {
                Physics2D.IgnoreCollision(collision, GetComponent <Collider2D>());
            }
            Rigidbody2D enemyRb = enemy.GetComponent <Rigidbody2D>();
            enemyRb.AddForce(rb.velocity.normalized * piercingCoefficient);
            rb.AddForce(-rb.velocity.normalized * piercingCoefficient);
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 4
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        enemyStats enemy = collision.gameObject.GetComponent <enemyStats>();

        if (enemy)
        {
            if (rb.velocity.magnitude > initialVelocity / 3)
            {
                print("Hit enemy");
                enemy.changeHealth(-damage);
                Rigidbody2D enemyRb   = enemy.GetComponent <Rigidbody2D>();
                float       massRatio = 1f / enemyRb.mass;
                //print(massRatio);
                enemyRb.AddForce(rb.velocity.normalized * piercingCoefficient * massRatio, ForceMode2D.Impulse);
                rb.AddForce(-rb.velocity.normalized * piercingCoefficient * massRatio, ForceMode2D.Impulse);
            }
            if (destroyOnContact)
            {
                Destroy(gameObject);
            }
        }
    }