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(); } } }
void OnCollisionEnter2D(Collision2D collision) { if (shouldEmitCollisionEvents && collision.collider.CompareTag(gameSettings.pegTag)) { PuckPegCollisionEvent puckPegCollisionEvent = new PuckPegCollisionEvent() { puck = this, collision = collision }; EventManager.Instance.NotifyListeners(puckPegCollisionEvent); } }