// Update is called once per frame void Update() { if (!IsPlaying) { return; } if (Spin) { Camera.main.transform.RotateAround(Vector3.zero, Vector3.up, 20.0f * Time.deltaTime); } //Input (Could be put in their own update functions as well) foreach (var player in Players) { player.HandleInput(); } Ball.MovementUpdate(GlobalSpeedMultiplier); //Movement (Could be put in their own update functions as well) //Do AI calculations after ball has moved foreach (var player in Players) { player.MovementUpdate(GlobalSpeedMultiplier); } //Collisions //Don't go off screen foreach (var player in Players) { player.CheckMapEdgeCollision(Map); } Vector2 hit = new Vector2(); //Check direction if (Ball.GetDirection().x < 0) { //Check player 1 collision //Debug.Log("p1 check"); Ball.CheckPlayerCollison(Players[0], ref hit); } else { //Check player 2 collision //Debug.Log("p2 check"); Ball.CheckPlayerCollison(Players[1], ref hit); } //Don't go off screen Ball.CheckMapEdgeCollision(Map); OutOfBounds ballOutOfBounds = Map.CheckOutOfBounds(Ball.Bounds); if (ballOutOfBounds == OutOfBounds.Left) { //Player 2 wins Debug.Log("Player 2 wins"); EndGame("Player 2 Wins"); } else if (ballOutOfBounds == OutOfBounds.Right) { //Player 1 wins Debug.Log("Player 1 wins"); EndGame("Player 1 Wins"); } }