예제 #1
0
        public void ExplodeEmporer()
        {
            Debug.Log("Emporer Destroyed");
            sequenceState = 2;

            CameraAngle newCameraAngle = new CameraAngle();

            newCameraAngle.distanceRange  = new Vector2(2500f, 2500f);
            newCameraAngle.fovRange       = new Vector2(45f, 60f);
            newCameraAngle.timeRange      = new Vector2(10f, 10f);
            newCameraAngle.interestTime   = 5f;
            newCameraAngle.stationary     = true;
            newCameraAngle.localOffset    = true;
            newCameraAngle.focus          = (new GameObject("Emporer Explosion")).transform;
            newCameraAngle.focus.position = emporerPosition;

            Director.main.cameraAngles = new List <CameraAngle> ();
            Director.main.NewCameraAngle(newCameraAngle);
        }
예제 #2
0
        private void Scene3()
        {
            Debug.Log("Scene 3");
            sequenceState = 2;

            Ship randomShip = GetRandomShip();

            if (randomShip != null)
            {
                CameraAngle newCameraAngle = new CameraAngle();
                newCameraAngle.distanceRange = new Vector2(3500f, 4500f);
                newCameraAngle.fovRange      = new Vector2(45f, 60f);
                newCameraAngle.timeRange     = new Vector2(6f, 8f);
                newCameraAngle.interestTime  = 5f;
                newCameraAngle.stationary    = true;
                newCameraAngle.localOffset   = true;
                newCameraAngle.focus         = randomShip.transform;
                Director.main.NewCameraAngle(newCameraAngle);
            }
        }
예제 #3
0
        private IEnumerator CinematicAngle()
        {
            yield return(new WaitForSeconds(Random.Range(0f, 5f)));

            while (enabled)
            {
                if ((Random.Range(0f, 1f) < 0.1f) && (target != null))
                {
                    CameraAngle newCameraAngle = new CameraAngle();
                    newCameraAngle.fovRange      = new Vector2(65f, 80f);
                    newCameraAngle.distanceRange = new Vector2(35f, 65f);
                    newCameraAngle.timeRange     = new Vector2(2f, 4f);
                    newCameraAngle.interestTime  = 5f;
                    newCameraAngle.interest      = 1f;
                    newCameraAngle.stationary    = true;
                    newCameraAngle.localOffset   = true;
                    newCameraAngle.focus         = transform;
                    Director.main.AddAngle(newCameraAngle);
                }
                yield return(new WaitForSeconds(Random.Range(4.5f, 11.5f)));
            }
        }
예제 #4
0
        private void Scene2()
        {
            Debug.Log("Scene 2");
            sequenceState = 1;
            vasudansShips.SetActive(true);

            Ship randomShip = GetRandomShip(Ship.Faction.Vasudans);

            if (randomShip != null)
            {
                CameraAngle newCameraAngle = new CameraAngle();
                newCameraAngle.fovRange     = new Vector2(65f, 80f);
                newCameraAngle.timeRange    = new Vector2(6f, 8f);
                newCameraAngle.interestTime = 5f;
                newCameraAngle.stationary   = true;
                newCameraAngle.localOffset  = true;
                newCameraAngle.focus        = randomShip.transform;

                Director.main.cameraAngles = new List <CameraAngle> ();
                Director.main.NewCameraAngle(newCameraAngle);
            }
        }
예제 #5
0
        public void NewCameraAngle(CameraAngle newAngle)
        {
            angleTimeLeft = Random.Range(newAngle.timeRange.x, newAngle.timeRange.y);
            angleFov      = Random.Range(newAngle.fovRange.x, newAngle.fovRange.y);

            angleOffset  = new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f));
            angleOffset *= Random.Range(newAngle.distanceRange.x, newAngle.distanceRange.y);

            if (currentAngle.localOffset)
            {
                mainCamera.transform.position = newAngle.focus.position + angleOffset;
            }
            else
            {
                mainCamera.transform.position = newAngle.focus.TransformPoint(angleOffset);
            }

            mainCamera.fieldOfView = angleFov;

            lookAtComponent.NewTarget(newAngle.focus);

            currentAngle = newAngle;
        }
예제 #6
0
        private CameraAngle GetBestAngle()
        {
            CameraAngle cameraAngle = null;

            float bestInterest = 0f;

            for (int i = cameraAngles.Count - 1; i >= 0; i--)
            {
                if (cameraAngles[i].focus != null)
                {
                    if (cameraAngles[i].interest > bestInterest)
                    {
                        bestInterest = cameraAngles[i].interest;
                        cameraAngle  = cameraAngles[i];
                    }
                }
                else
                {
                    cameraAngles.RemoveAt(i);
                }
            }

            return(cameraAngle);
        }
예제 #7
0
        private IEnumerator ICinematicShips(float delay)
        {
            yield return(null);

            yield return(new WaitForSeconds(delay));

            CameraAngle cameraAngle = new CameraAngle();

            cameraAngle.interest = 1f;

            while ((enabled) && (ships.Count > 0))
            {
                if ((Random.Range(0f, 1f) >= 0.25f) || (sequenceState != 2))
                {
                    Ship randomShip = null;
                    switch (sequenceState)
                    {
                    case 0:
                        randomShip = GetRandomShip(Ship.Faction.Terrans);
                        break;

                    case 1:
                        randomShip = GetRandomShip(Ship.Faction.Vasudans);
                        break;

                    case 2:
                        randomShip = GetRandomShip();
                        break;
                    }

                    if (randomShip != null)
                    {
                        cameraAngle.timeRange    = new Vector2(3f, 6f);
                        cameraAngle.interestTime = 5f;
                        if (Random.Range(0f, 1f) < 0.5f)
                        {
                            cameraAngle.stationary = true;
                        }
                        else
                        {
                            cameraAngle.stationary = false;
                        }
                        if (Random.Range(0f, 1f) < 0.5f)
                        {
                            cameraAngle.localOffset = true;
                        }
                        else
                        {
                            cameraAngle.localOffset = false;
                        }
                        cameraAngle.focus = randomShip.transform;

                        Director.main.AddAngle(cameraAngle);
                    }
                }
                else
                {
                    Director.main.AddAngle(emporerCameraAngle);
                }

                yield return(new WaitForSeconds(Random.Range(3f, 5f)));
            }

            cinematicShipSo = null;
        }
예제 #8
0
 public void AddAngle(CameraAngle newAngle)
 {
     cameraAngles.Add(newAngle);
 }