Esempio n. 1
0
    //外部状态强制切换
    private void HandleModeForceSwitch(CameraMode mode, CameraContext context = null)
    {
        if (!Reset(false))
        {
            return;
        }
        BaseCameraController camCtrl = CameraUtil.GetCamCtrl(mode);

        if (camCtrl.Enable(false) && camCtrl.CheckContext(context))
        {
            SwitchCamMode(mode, context);
        }
    }
Esempio n. 2
0
 //内部状态切换
 private void RefreshCameraMode(CameraContext context = null)
 {
     if (!Reset(false))
     {
         return;
     }
     for (int i = 0; i < camCtrl.AllowChangeList.Count; i++)
     {
         BaseCameraController canCtrl = CameraUtil.GetCamCtrl(camCtrl.AllowChangeList[i]);
         if (canCtrl.Enable(true) && canCtrl.CheckContext(context))
         {
             SwitchCamMode(camCtrl.AllowChangeList[i], context);
             break;
         }
     }
 }
Esempio n. 3
0
    private void SetCamera()
    {
        if (currentMode == ViewMode.firstPerson)
        {
            currentCameraController = firstPersonController;
        }
        else if (currentMode == ViewMode.thirdPerson)
        {
            currentCameraController = orbitController;
        }
        else
        {
            currentCameraController = freeLookController;
        }

        freeLookController.enabled    = currentCameraController == freeLookController;
        orbitController.enabled       = currentCameraController == orbitController;
        firstPersonController.enabled = currentCameraController == firstPersonController;
    }
    public void Init()
    {
        // tell the player that it can move, in 4 seconds
        Invoke("StartPlayer", 4);

        // incase we need to change the timescale, it gets set here
        Time.timeScale = gameSpeed;

        // we store the current game's number of players in a pref so it may be set elsewhere (the main menu for example) and
        // carried into every level of the game.
        if (PlayerPrefs.HasKey("totalPlayers"))                // does this pref exist?
        {
            totalPlayers = PlayerPrefs.GetInt("totalPlayers"); // then use the value it holds
        }
        else
        {
            totalPlayers = 1;            // default to single player
        }

        // find player parent transform
        playerParent = GameObject.Find("Player_Parent_Object").transform;

        Vector3[]    playerStarts    = new Vector3[totalPlayers];
        Quaternion[] playerRotations = new Quaternion[totalPlayers];

        // this may be a little over-the-top, but hard coding it just wouldn't fit in with the overall theme of re-use
        for (int i = 0; i < totalPlayers; i++)
        {
            tempQuat = Quaternion.identity;

            if (i == 0)
            {
                // place player 1 at the default start position of -5,0,0
                tempVec3 = new Vector3(-5, 0, 0);
            }
            else
            {
                // we'll make player 2 a start position 5 units to the right of the start position of player 1
                tempVec3 = new Vector3(-5 + (i * 5), 0, 0);
            }
            playerStarts[i]    = tempVec3;
            playerRotations[i] = tempQuat;
        }

        // if we haven't already got players set up, didInit will still be false.. otherwise we skip creating the players
        if (!didInit)
        {
            SpawnController.Instance.SetUpPlayers(playerPrefabList, playerStarts, playerRotations, playerParent, totalPlayers);
        }

        // grab a ref to the player's gameobject for later
        playerGO1 = SpawnController.Instance.GetPlayerGO(0);

        // if we have a two player game, let's grab that second player's gameobject too
        if (totalPlayers > 1)
        {
            playerGO2 = SpawnController.Instance.GetPlayerGO(1);
        }

        // find the game camera
        CameraTransform = GameObject.Find("GameCamera").transform;

        // position the camera at the specified start position (set in the Unity editor Inspector window on this component)
        tempVec3   = CameraTransform.localPosition;
        tempVec3.z = CameraStartPositionZ;
        CameraTransform.localPosition = tempVec3;

        // if we don't have a camera control script object set by the editor, try to find one
        cameraControl = CameraTransform.GetComponent <BaseCameraController>();

        isStopped = false;

        // make sure we have a scene manager to talk to
        GetSceneManager();

        didInit = true;
    }