Ejemplo n.º 1
0
    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;

    }