Example #1
0
        public void OnPuckPegCollision(PuckPegCollisionEvent puckPegCollisionEvent)
        {
            if (IsActive && pegBreakCount < maxPegBreaks)
            {
                Puck        puck        = puckPegCollisionEvent.puck;
                Rigidbody2D puckBody    = puck.GetComponent <Rigidbody2D>();
                Collider2D  pegCollider = puckPegCollisionEvent.collision.collider;
                Peg         peg         = pegCollider.GetComponent <Peg>();

                // Ignore collision with this peg
                Collider2D puckCollider = puck.GetComponent <Collider2D>();
                Physics2D.IgnoreCollision(pegCollider, puckCollider);

                // Smash Peg
                SmashPeg(pegCollider, puckBody);
                pegBreakCount++;

                // Dampen momentum of Puck after it smashes the Peg
                DampenPuckMomentum(peg, puck);

                StartCoroutine(StutterPuckMovement(puckBody));

                if (pegBreakCount >= maxPegBreaks)
                {
                    Deactivate();
                }
            }
        }
Example #2
0
 void OnCollisionEnter2D(Collision2D collision)
 {
     if (shouldEmitCollisionEvents && collision.collider.CompareTag(gameSettings.pegTag))
     {
         PuckPegCollisionEvent puckPegCollisionEvent = new PuckPegCollisionEvent()
         {
             puck      = this,
             collision = collision
         };
         EventManager.Instance.NotifyListeners(puckPegCollisionEvent);
     }
 }