예제 #1
0
    void Start()
    {
        controllerAI    = GetComponent <ControllerAI>();
        gravity         = -(2f * maxJumpHeight) / (timeToJumpApex * timeToJumpApex);
        minJumpVelocity = Mathf.Sqrt(2f * Mathf.Abs(gravity * minJumpHeight));
        maxJumpVelocity = Mathf.Abs(gravity) * timeToJumpApex;


        currentMoveSpeed            = moveSpeed; //at start, move speed is max (decreased when landing from dash)
        currentJumpHeightMultiplier = 1f;        //same as above but for jump height

        playerCollider = GetComponent <BoxCollider>();
        playerRenderer = GetComponent <Renderer>();

        masterManager = FindObjectOfType <MasterManager>();

        characterScale = gameObject.transform.localScale;

        //uglyNose = transform.GetChild(0).gameObject;//abomination
        //uglyNoseRenderer = uglyNose.GetComponent<Renderer>();
        //uglyArm = transform.GetChild(1).gameObject;//abomination
        //uglyArmRenderer = uglyArm.GetComponent<Renderer>();


        //this is the projectile stopper
        //projectileStopper = transform.GetChild(2).GetComponent<BoxCollider>();
        //if (projectileStopper.enabled) projectileStopper.enabled = false;//if active, deactivate it

#if UNITY_EDITOR                                                                          //that's taken care by master manager when scene is loaded
        lastRegisteredSpawnerPos = FindObjectOfType <PlayerSpawner>().transform.position; //initialise spawner pos
#endif

        masterManager.LevelRestartEvent += RestartLevel;//subscribe restartlevel to event from master manager
    }
예제 #2
0
 public Manager(int mapWidth, int mapHeight)
 {
     MapWidth       = mapWidth;
     MapHeight      = mapHeight;
     controllerAI   = new ControllerAI(mapWidth, mapHeight);
     controllerUser = new ControllerUser(mapWidth, mapHeight);
 }
예제 #3
0
 public void Reset()
 {
     readyToAttack  = false;
     round          = 0;
     controllerAI   = new ControllerAI(mapWidth, mapHeight);
     controllerUser = new ControllerUser(mapWidth, mapHeight);
 }
예제 #4
0
    //[SerializeField] GameObject[] patrolWaypoints;

    void Start()
    {
        movementAI   = GetComponent <MovementAI>();
        controllerAI = GetComponent <ControllerAI>();

        playerObj   = FindObjectOfType <Player>().gameObject;
        boxCollider = GetComponent <BoxCollider>();
    }
예제 #5
0
    /// <summary>
    /// Start a mock game with 2 AIs
    /// </summary>
    void StartMockGame()
    {
        // Create controllers
        int          aiId = -1;
        ControllerAI leftPlayerController  = new ControllerAI(aiId, ControllerAI.Difficulty.Normal, _racketsDistance, _leftRacket.InitialPosition, _ball.transform);
        ControllerAI rightPlayerController = new ControllerAI(aiId, ControllerAI.Difficulty.Normal, _racketsDistance, _rightRacket.InitialPosition, _ball.transform);

        // Assign controllers to players and start the mock game
        InitGame(leftPlayerController, rightPlayerController);
        StartCoroutine(FirstServe());
    }
예제 #6
0
    /// <summary>
    /// Start a new game using chosen parameters in menu
    /// </summary>
    public void StartNewGame()
    {
        // Default controllers
        Transform ball            = GameManager.Instance.Ball.transform;
        float     racketsDistance = GameManager.Instance.RacketsDistance;

        ControllerBase leftPlayerController  = new ControllerAI(0, ControllerAI.Difficulty.Normal, racketsDistance, GameManager.Instance.LeftRacketInitialPosition, ball);
        ControllerBase rightPlayerController = new ControllerAI(1, ControllerAI.Difficulty.Normal, racketsDistance, GameManager.Instance.RightRacketInitialPosition, ball);

        float playerRacketSpeed = GameManager.Instance.PlayerRacketSpeed;

        int playerId = 0;

        // Create racket controller for the left player using chosen parameters
        if (_leftPlayerType == Human)
        {
            leftPlayerController = new ControllerHuman(playerId, ControllerBase.ControllerType.Human, playerRacketSpeed, GameManager.Instance.LeftRacketInitialPosition);
        }
        else if (_leftPlayerType == Ai)
        {
            leftPlayerController = new ControllerAI(playerId, _difficulty, racketsDistance, GameManager.Instance.LeftRacketInitialPosition, ball);
        }
        else
        {
            Debug.LogError("Error starting new game. Unknown controller type found in Main Menu: " + _leftPlayerType);
        }

        // Increases player id to match controls
        ++playerId;

        // Create racket controller for the right player using chosen parameters
        if (_rightPlayerType == Human)
        {
            rightPlayerController = new ControllerHuman(playerId, ControllerBase.ControllerType.Human, playerRacketSpeed, GameManager.Instance.RightRacketInitialPosition);
        }
        else if (_rightPlayerType == Ai)
        {
            rightPlayerController = new ControllerAI(playerId, _difficulty, racketsDistance, GameManager.Instance.RightRacketInitialPosition, ball);
        }
        else
        {
            Debug.LogError("Error starting new game. Unknown controller type found in Main Menu: " + _rightPlayerType);
        }

        // Start new game
        GameManager.Instance.StartNewGame(leftPlayerController, rightPlayerController);

        // Hide menus
        _mainMenu.gameObject.SetActive(false);
        _pauseMenu.gameObject.SetActive(false);
    }