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); } } }
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); } } }