void HitBall(Vector3 Direction, float Speed)
    {
        if (!Replaying)
        {
            //Save replay information
            LastHitSpeed     = Speed;
            LastHitDirection = Direction;
            HitCount++;
        }

        //Save positions
        LastBallPositions.Clear();
        foreach (GameObject Ball in Balls)
        {
            LastBallPositions.Add(Ball.transform.position);
        }

        //Hit to rigidbody
        Balls[0].GetComponent <Rigidbody>().AddForce(Direction * (Speed * 5f));
        HitSpeed = 0f;

        //Switch to watch mode
        CanPlay    = CanHit = false;
        IsWatching = true;
        CameraCtrl.ActivateCamera(true, Replaying);

        ReplayButton.SetActive(false);
    }
Esempio n. 2
0
 private void OnTriggerEnter(Collider other)
 {
     if (other.CompareTag("Player"))
     {
         mainCameraController.ActivateCamera(CameraID);
     }
 }
 public void StartLevel()
 {
     mainUI.gameObject.SetActive(false);
     loadUI.gameObject.SetActive(false);
     playerController.ActivatePlayer(); // FIXME should this be a static thing too?
     cameraController.ActivateCamera(); // FIXME should this be a static thing too?
     CubeOfDeathController.cubesActive = true;
     Time.timeScale = 1;
 }
Esempio n. 4
0
 void OnTriggerEnter2D(Collider2D collider)
 {
     CameraController.ActivateCamera();
 }
Esempio n. 5
0
    protected override void ApplyEffect()
    {
        // Downscale resolution to closest one applicable FIXME render textures are supposedly better for this
        Resolution[] supportedResolutions = Screen.resolutions;
        int          currDiff             = int.MaxValue;
        int          resInd = -1;

        for (int i = 0; i < supportedResolutions.Length; i++)
        {
            Resolution res       = supportedResolutions[i];
            int        heighDiff = Mathf.Abs(res.height - (screenResolution.height / numberOfCameras));
            if (heighDiff < currDiff)
            {
                currDiff = heighDiff; resInd = i;
            }
            int widthDiff = Mathf.Abs(res.width - (screenResolution.width / numberOfCameras));
            if (widthDiff < currDiff)
            {
                currDiff = widthDiff; resInd = i;
            }
        }
        Screen.SetResolution(supportedResolutions[resInd].width, supportedResolutions[resInd].height, fullScreenMode, screenResolution.refreshRate);

        // Create list of flips
        List <Quaternion> roll = new List <Quaternion>(numberOfCameras);
        List <Quaternion> yaw  = new List <Quaternion>(numberOfCameras);

        //Vector3[] baseCamOffset = new Vector3[numberOfCameras];
        roll.Add(Quaternion.identity);
        yaw.Add(Quaternion.identity);
        for (int i = 1; i < numberOfCameras; i++)
        {
            float rollAngle = Random.Range(angleRange[0], angleRange[1]) - (Random.Range(0, 2) * 360);
            float yawAngle  = Random.Range(angleRange[0], angleRange[1]) - (Random.Range(0, 2) * 360);
            roll.Add(Quaternion.AngleAxis(rollAngle, mainCamTrans.InverseTransformDirection(playerCont.ForwardDir)));
            yaw.Add(Quaternion.AngleAxis(yawAngle, mainCamObjTrans.InverseTransformDirection(playerCont.UpDir)));
        }

        // Create additional cameras
        additionalCameras = new GameObject[numberOfCameras];
        int[] randCamRectIndices = Utilities.RandomIndices(numberOfCameras);
        for (int i = 0; i < numberOfCameras; i++)
        {
            // Create new cam and set viewport
            GameObject camObj = Object.Instantiate(mainCamObj);
            Camera     cam    = camObj.GetComponentInChildren <Camera>();
            cam.depth = 1;
            cam.rect  = camRect[randCamRectIndices[i]];

            // Activate
            CameraController camCont = camObj.GetComponent <CameraController>();
            camCont.ActivateCamera(); // FIXME there probably is a one frame lag in which the camera is already lerping due to the activate. Changing how cam activation works with resetting position and moving it down here would solve it likely

            // Make positions/rotations identical to main cam
            Transform camObjTrans   = camObj.transform;
            Transform camPivotTrans = camObjTrans.GetChild(0);
            Transform camTrans      = camPivotTrans.GetChild(0);
            camCont.SetBaseCamRot(mainCamCont.GetBaseCamRot());
            camCont.SetBasePivotRot(mainCamCont.GetBasePivotRot());
            camCont.SetBaseCamOffset(mainCamCont.GetBaseCamOffset());
            camObjTrans.position                  = mainCamObjTrans.position;
            camPivotTrans.transform.position      = mainCamPivotTrans.position;
            camPivotTrans.transform.localRotation = mainCamPivotTrans.localRotation;
            camTrans.transform.position           = mainCamTrans.position;

            // Apply rotations
            camCont.SetBaseCamRot(mainCamCont.GetBaseCamRot() * yaw[i]);
            camObjTrans.rotation             = mainCamObjTrans.rotation * yaw[i];
            camTrans.transform.localRotation = mainCamTrans.localRotation * roll[i];

            // Save
            additionalCameras[i] = camObj;
        }
    }