private void InitializeLevel() { IInputController[] inputControllers = InputControllerManager.CreateControllers(configuration.playerCount); players = new PlayerController[configuration.playerCount]; var viewRects = GetViewRects(configuration.playerCount); // Find spawn points and hide them from view. We can't unactivate them from elsewhere before used here. spawnPoints = FindObjectsOfType <PlayerSpawnPoint>(); for (int i = 0; i < spawnPoints.Length; i++) { spawnPoints[i].gameObject.SetActive(false); } for (int i = 0; i < configuration.playerCount; i++) { OrbitCameraTP orbitCamera = Instantiate( orbitCameraPrefab, spawnPoints[i].Position + Vector3.left * 200f, spawnPoints[i].Orientation ); orbitCamera.SetInputController(inputControllers[i]); orbitCamera.GetCamera().rect = viewRects[i]; PlayerHudScript hud = Instantiate( hudPrefab, hudCanvas.transform ); hud.viewportRect = viewRects[i]; hud.Rebuild(); players[i] = Instantiate(playerPrefab); // Get controller, camera, hud, random color, etc players[i].Initialize( new PlayerHandle(i), orbitCamera, inputControllers[i], playerColors [i], hud ); players[i].Spawn(spawnPoints[i].Position, spawnPoints[i].Forward); } musicManager.PlayStart(); judge = new Judge(players, rules, StartPlayerWinRoutine); judge.rules = configuration.rules; GameStart(); }
// Set mandatory values to playercontroller public void Initialize( PlayerHandle handle, OrbitCameraTP cameraRig, IInputController input, Color color, PlayerHudScript hud ) { this.handle = handle; this.hud = hud; this.input = input; this.cameraRig = cameraRig; cameraRig.anchor = transform; // Color clear designates no change if (color != Color.clear) { characterRenderer.material.color = color; } // Initialize health systems hitpoints = maxHitpoints; damageController.TakeDamage.AddListener((damage) => Hurt((int)damage)); hud.SetHp(maxHitpoints); // Subscribe input events input.Fire += Fire; input.Jump += ragdoll.Jump; input.PickUp += ToggleCarryGun; input.ToggleRagdoll += ToggleRagdoll; // These should be default values on instantiate instead of explicitly // setting them here UnSpawn(); }