/// <summary> /// Detects collision with a ball to aim the ball /// </summary> /// <param name="coll">collision info</param> void OnCollisionEnter2D(Collision2D coll) { if (coll.gameObject.CompareTag("Ball") && FrontCollision(coll)) { // calculate new ball direction float ballOffsetFromPaddleCenter = coll.transform.position.y - transform.position.y; float normalizedBallOffset = ballOffsetFromPaddleCenter / halfPaddleHeight; float angleOffset = normalizedBallOffset * BounceAngleHalfRange; // angle modification is based on screen side float angle; if (side == ScreenSide.Left) { angle = angleOffset; } else { angle = (float)(Mathf.PI - angleOffset); } Vector2 direction = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)); // tell ball to set direction to new direction Ball ballScript = coll.gameObject.GetComponent <Ball>(); ballScript.SetDirection(direction); //Add hits to paddle side hud.AddHits(side, ballScript.Hits); } }
/// <summary> /// Detects collision with a ball to aim the ball /// </summary> /// <param name="coll">collision info</param> void OnCollisionEnter2D(Collision2D coll) { //print("Here?"); if (coll.gameObject.CompareTag("Ball") && fixingCollision(coll)) { //print("here now?"); // calculate new ball direction float ballOffsetFromPaddleCenter = coll.transform.position.y - transform.position.y; float normalizedBallOffset = ballOffsetFromPaddleCenter / halfColliderHeight; float angleOffset = normalizedBallOffset * BounceAngleHalfRange; // angle modification is based on screen side float angle; if (side == ScreenSide.Left) { angle = angleOffset; } else { angle = (float)(Mathf.PI - angleOffset); } Vector2 direction = new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)); // tell ball to set direction to new direction Ball ballScript = coll.gameObject.GetComponent <Ball>(); ballScript.SetDirection(direction); //Add number of hits hud.AddHits(side, ballScript.Hits); } //Prints out the points of collision for the function fixingCollision /*if (fixingCollision(coll)) * { * print(coll.GetContact(0).point.x); * }*/ }