// Handle collision public void OnCollisionEnter2D(Collision2D collision) { // get normal Vector2 normal = collision.contacts[0].normal; Vector2 contactPoint = collision.contacts[0].point; // assign collision object Paddle paddle = collision.gameObject.GetComponent <Paddle>(); Brick brick = collision.gameObject.GetComponent <Brick>(); ScreenCollider screenCollider = collision.gameObject.GetComponent <ScreenCollider>(); // handle collision with object if (paddle != null) { CollideWithPaddle(paddle, normal, contactPoint); // top face of paddle collision does not use standard bounce if (normal != Vector2.up) { Bounce(normal); } } else if (brick != null) { CollideWithBrick(brick, normal); Bounce(normal); } else if (screenCollider != null) { CollideWithScreenCollider(screenCollider, normal); Bounce(normal); } }
// Handle screen collider collsion private void CollideWithScreenCollider(ScreenCollider screenCollider, Vector2 normal) { if (normal == Vector2.up) { ToOnPaddleState(); ball.gameManager.scoreTracker.ResetAllMultipliers(); } }
void Awake() { cam = GetComponent <Camera>(); if (!cam) { cam = Camera.main; } if (!cam) { Debug.LogError("No camera available"); return; } wantedAspectRatio = _wantedAspectRatio; screenCollider = FindObjectOfType <ScreenCollider>().GetComponent <ScreenCollider>(); currentScreenWidth = Screen.width; currentScreenHeight = Screen.height; aspectRatio = Screen.width / Screen.height; SetCamera(); }