void OnCollisionEnter2D(Collision2D collision) { //handles fall damage when the player collides with the ground at a high velocity if (readyToTakeFallDamage) { readyToTakeFallDamage = false; HandleFallDamage(); } if ((collision.collider.gameObject.layer == 12 || collision.collider.gameObject.layer == 9) && canTakeDamage) //player struck by enemy or enemy shot { if (!hasShieldActivated) { if (currentHealth > 1) { HandleNonFatalHits(); } else { HandleFatalHits(); } currentHealth = (int)Mathf.Clamp(currentHealth - 1, 0f, maxHealth); //health cannot go below 0 if (currentHealth <= maxHealth && healthBar.GetMaxValue() > maxHealth) { healthBar.ChangeMaxValue(maxHealth); } healthBar.resourceValue = currentHealth; } else { //has shield activated shieldValue -= 1; AudioSource.PlayClipAtPoint(deflectingShotSound, transform.position); if (shieldValue <= 0) { GameObject currentShieldSpawn = GameObject.FindGameObjectWithTag("Shield"); Destroy(currentShieldSpawn); print("Should have destroyed the shield spawn"); DeactivateSuperpower(); } } canTakeDamage = false; Invoke("turnOnAbilityToTakeDamage", 1.0f); } }
void ActivateShield() { print("shield activated"); if (!hasShieldActivated) { hasShieldActivated = true; shieldSpawn = Instantiate(shield, transform.position, Quaternion.identity) as GameObject; //shieldSpawn.transform.parent = transform; //ensures that the shield always stays at the same position as the player while active shieldBar.resourceValue = shieldBar.GetMaxValue(); shieldValue = 5; //Invoke("DeactivateSuperpower", 5f); } }