void Update() { //Directions obtained from CC_CANOE class. We use the Right wand and Head for orientation. //Where the right wand is pointed is the direction the player will move Vector3 forwardDir = CC_CANOE.WandGameObject(Wand.Right).transform.forward; Vector3 rightDir = CC_CANOE.HeadGameObject().transform.right; rightDir = Vector3.Normalize(Vector3.ProjectOnPlane(rightDir, Vector3.up)); Vector3 upDir = Vector3.up; //The input from the trigger axis of the left wand float forward = CC_INPUT.GetAxis(Wand.Right, WandAxis.Trigger); //Move the CharacterController attached to the CC_CANOE. Vector3 movement = forwardDir * forward; charCont.Move(movement * Time.deltaTime * moveSpeed); //The input from the X and Y axis of the right wand joystick. yAxisChange += CC_INPUT.GetAxis(Wand.Right, WandAxis.XAxis) * Time.deltaTime * lookSpeed; yAxisChange = yAxisChange % 360.0f; xAxisChange += CC_INPUT.GetAxis(Wand.Right, WandAxis.YAxis) * Time.deltaTime * lookSpeed; xAxisChange = Mathf.Clamp(xAxisChange, -maxPitch, maxPitch); //Change the direction the CharacterController is facing. charCont.transform.rotation = Quaternion.identity; charCont.transform.RotateAround(CC_CANOE.CanoeGameObject().transform.position, Vector3.up, yAxisChange); charCont.transform.RotateAround(CC_CANOE.CanoeGameObject().transform.position, rightDir, xAxisChange); }
/// <summary> /// Updates the camera perspective for one group of screens. /// </summary> /// <param name="cameras">Array of cameras.</param> /// <param name="cameraIndex">Index of the camera to update.</param> /// <param name="panOptic">True for panoptic view mode.</param> public void UpdateCameraPerspective(Camera[] cameras, int cameraIndex, bool panOptic) { //Get this camera rig's projection screens GameObject[] projScreens = new GameObject[4]; if (cameraIndex == 8) { cameraIndex = 0; } projScreens[0] = Screens.transform.GetChild(cameraIndex * 4).gameObject; projScreens[1] = Screens.transform.GetChild(cameraIndex * 4 + 1).gameObject; projScreens[2] = Screens.transform.GetChild(cameraIndex * 4 + 2).gameObject; projScreens[3] = Screens.transform.GetChild(cameraIndex * 4 + 3).gameObject; //Set each camera's rotation depending on PanOptic setting if (panOptic) { for (int i = 0; i < 4; i++) { cameras[i].transform.LookAt(projScreens[i].transform, CC_CANOE.CanoeGameObject().transform.up); } } else { for (int i = 0; i < 4; i++) { cameras[i].transform.localEulerAngles = Vector3.zero; } } //Set each camera's projection for (int i = 0; i < 4; i++) { perspectiveOffCenter(cameras[i], projScreens[i]); perspectiveOffCenter(cameras[i].transform.GetChild(0).GetComponent <Camera>(), projScreens[i]); perspectiveOffCenter(cameras[i].transform.GetChild(1).GetComponent <Camera>(), projScreens[i]); } }