Esempio n. 1
0
    // 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");
        }
    }