void TrackPlayers() { Vector3 startingPoint = transform.position; startingPoint.z = 0f; cameraBounds = new BoundsBox(startingPoint); BoundsBox priorityBounds = new BoundsBox(startingPoint); foreach ( KeyValuePair<int,PlayerObject> playerPair in GameController.sActivePlayers) { PlayerObject player = playerPair.Value; cameraBounds.GrowTo(player.transform.position); priorityBounds.GrowTo(player.transform.position); } foreach( KeyValuePair<int, PlayerTeamObjectiveObject> objPair in GameController.sActiveObjects ) { PlayerTeamObjectiveObject player = objPair.Value; cameraBounds.GrowTo(player.transform.position); priorityBounds.GrowTo(player.transform.position); } foreach (KeyValuePair<int, BaseMonsterBrain> monstPair in GameController.sSpawnedMonsters) { BaseMonsterBrain monster = monstPair.Value; cameraBounds.GrowTo(monster.transform.position); } cameraBounds.GrowBy(m_cameraBoundsRadius); Vector3 centerPoint = priorityBounds.GetCenter(); float heightRatio = 0f; float maxDistance = cameraBounds.MaxDistance(); if (maxDistance > m_minPlayerDistance) { float distanceFromMin = maxDistance - m_minPlayerDistance; float maxDelta = m_maxPlayerDistance - m_minPlayerDistance; heightRatio = (distanceFromMin / maxDelta); } m_desiredCamHeight = Mathf.Lerp(lowestCamDistance, highestCamDistance, heightRatio); m_desiredCamPoint = centerPoint; m_desiredCamPoint.z = -10f; }