public void OnCollisionEnter2D(Collision2D collider) { if (collider.gameObject.tag == "PlayerShip") { // player hit by a cannonball GlobalValues.IncrementHealth(-damage); GlobalValues.IncrementLeakRate(damage / 10); } else if (collider.gameObject.tag == "EnemyShip") { // enemy ship hit by a cannonball EnemyShip hitShip = collider.gameObject.GetComponent <EnemyShip>(); hitShip.TakeDamage(4 * damage); } // !!! Explosion Sound Effect + Animation Trigger Destroy(this.gameObject); }
void OnCollisionEnter2D(Collision2D collider) { if (collider.gameObject.tag == "Rock") { float impulse = Mathf.Clamp(Vector2.Dot(collider.contacts[0].normal, collider.relativeVelocity) * rb.mass, 0, 1); // Deal damage relative to impulse of collision, rock size, and multiplier float healthLoss = impulse * collider.transform.localScale.x * Constants.rockDmgMultiplier; GlobalValues.IncrementHealth(-healthLoss); // Leak rate increments relative to impulse of collision float leakage = impulse * collider.transform.localScale.x * Constants.rockLeakMultiplier; leakage = (GlobalValues.sailHeight + .25f) * leakage; GlobalValues.IncrementLeakRate(leakage); GlobalValues.deck.SetFloodAmount(leakage * 100); // screen shake //!!! // crash SE //!!! } }