Пример #1
0
 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);
 }
Пример #2
0
    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
            //!!!
        }
    }