public void Start() { _camera = GetComponent <Camera>(); _cameraDefaultsAndConstraints = mainController.map.cameraDefaultsAndConstraints; _cameraDefaultsAndConstraints.rotateSpeed *= -1.0f; if (cameraViewingMode == CameraViewingMode._2D) { _oldCameraViewingMode = CameraViewingMode._3D; } else { _oldCameraViewingMode = CameraViewingMode._2D; } _wholeScreenUiObj = mainController.wholeScreenUiObj; _wholeScreenUiCanvasRect = _wholeScreenUiObj.GetComponent <RectTransform>(); if (Application.platform == RuntimePlatform.WebGLPlayer) { _cameraDefaultsAndConstraints.rotateSpeed /= 2.0f; _cameraDefaultsAndConstraints.dragSpeed /= 2.0f; _cameraDefaultsAndConstraints.zoomSpeed /= 2.0f; } //// Set starting orthographic size, based on min and max orthographic sizes //_camera.orthographicSize = _cameraDefaultsAndConstraints.maximumOrthographicSize - // 0.5f * (_cameraDefaultsAndConstraints.maximumOrthographicSize - _cameraDefaultsAndConstraints.minimumOrthographicSize); // Set camera position and zoom to the map's defaults _camera.orthographicSize = _cameraDefaultsAndConstraints.defaultOrthographicSize; transform.position = _cameraDefaultsAndConstraints.defaultPosition; }
public void ToggleCameraViewingMode() { if (cameraViewingMode == CameraViewingMode._2D) { cameraViewingMode = CameraViewingMode._3D; } else { cameraViewingMode = CameraViewingMode._2D; } }
public void Update() { // If switching from 3D to 2D mode if (_oldCameraViewingMode == CameraViewingMode._3D && cameraViewingMode == CameraViewingMode._2D) { _oldCameraViewingMode = cameraViewingMode; _oldRotationX = 45.0f; _oldRotationY = transform.rotation.eulerAngles.y; _oldPositionZ = transform.position.z; transform.rotation = Quaternion.Euler(90.0f, 180.0f, 0.0f); transform.position = new Vector3(transform.position.x, -20.0f, transform.position.z); _camera.clearFlags = CameraClearFlags.SolidColor; _camera.orthographic = true; toggleButtonTextObj.GetComponent <Text>().text = "3D"; } // If switching from 2D to 3D mode else if (_oldCameraViewingMode == CameraViewingMode._2D && cameraViewingMode == CameraViewingMode._3D) { _oldCameraViewingMode = cameraViewingMode; transform.rotation = Quaternion.Euler(_oldRotationX, _oldRotationY, transform.rotation.z); transform.position = new Vector3(transform.position.x, transform.position.y, _oldPositionZ); _camera.clearFlags = CameraClearFlags.Skybox; _camera.orthographic = false; toggleButtonTextObj.GetComponent <Text>().text = "2D"; } if (mainController.fullscreenView == null) { _referencePosition = new Vector2( Input.mousePosition.x / _wholeScreenUiObj.GetComponent <Canvas>().pixelRect.size.x *_wholeScreenUiObj.GetComponent <CanvasScaler>().referenceResolution.x, Input.mousePosition.y / _wholeScreenUiObj.GetComponent <Canvas>().pixelRect.size.y *_wholeScreenUiObj.GetComponent <CanvasScaler>().referenceResolution.y ); _mouseRatioX = _referencePosition.x / _wholeScreenUiCanvasRect.sizeDelta.x; _mouseRatioY = _referencePosition.y / _wholeScreenUiCanvasRect.sizeDelta.y; // Zoom if (_mouseRatioX < 0.75 && _mouseRatioY > 0.2) { if (Input.GetMouseButtonDown(1)) { _rightMouseButtonStartedInScene = true; } if (Input.GetMouseButtonDown(0)) { _leftMouseButtonStartedInScene = true; } // Can adjust zoom based on scroll wheel if (cameraViewingMode == CameraViewingMode._3D) { transform.Translate(Vector3.forward * Input.GetAxis("Mouse ScrollWheel") * _cameraDefaultsAndConstraints.zoomSpeed); } else // if (cameraViewingMode == CameraViewingMode._2D) { _camera.orthographicSize -= Input.GetAxis("Mouse ScrollWheel") * _cameraDefaultsAndConstraints.zoomSpeed; } } // Rotate if (cameraViewingMode == CameraViewingMode._3D && Input.GetMouseButton(1) && _rightMouseButtonStartedInScene) { transform.Rotate(new Vector3(Input.GetAxis("Mouse Y") * _cameraDefaultsAndConstraints.rotateSpeed, -Input.GetAxis("Mouse X") * _cameraDefaultsAndConstraints.rotateSpeed, 0)); _rotateX = transform.rotation.eulerAngles.x; _rotateY = transform.rotation.eulerAngles.y; transform.rotation = Quaternion.Euler(_rotateX, _rotateY, 0); } // Drag if (Input.GetMouseButton(0) && _leftMouseButtonStartedInScene) { if (cameraViewingMode == CameraViewingMode._3D) { transform.Translate(new Vector3( -Input.GetAxis("Mouse X") * _cameraDefaultsAndConstraints.dragSpeed * 1.0f / 50.0f * (transform.position.y - _cameraDefaultsAndConstraints.minimumY + 10.0f), -Input.GetAxis("Mouse Y") * _cameraDefaultsAndConstraints.dragSpeed * 1.0f / 50.0f * (transform.position.y - _cameraDefaultsAndConstraints.minimumY + 10.0f), 0)); } else // if (cameraViewingMode == CameraViewingMode._2D) { transform.Translate(new Vector3( -Input.GetAxis("Mouse X") * _cameraDefaultsAndConstraints.dragSpeed * 1.0f / 50.0f * _camera.orthographicSize, -Input.GetAxis("Mouse Y") * _cameraDefaultsAndConstraints.dragSpeed * 1.0f / 50.0f * _camera.orthographicSize, 0)); } } if (Input.GetMouseButtonUp(1)) { _rightMouseButtonStartedInScene = false; } if (Input.GetMouseButtonUp(0)) { _leftMouseButtonStartedInScene = false; } // Keep camera position within constraints if (transform.position.x < _cameraDefaultsAndConstraints.mimimumX) { transform.position = new Vector3(_cameraDefaultsAndConstraints.mimimumX, transform.position.y, transform.position.z); } else if (transform.position.x > _cameraDefaultsAndConstraints.maximumX) { transform.position = new Vector3(_cameraDefaultsAndConstraints.maximumX, transform.position.y, transform.position.z); } if (transform.position.y < _cameraDefaultsAndConstraints.minimumY) { transform.position = new Vector3(transform.position.x, _cameraDefaultsAndConstraints.minimumY, transform.position.z); } else if (transform.position.y > _cameraDefaultsAndConstraints.maximumY) { transform.position = new Vector3(transform.position.x, _cameraDefaultsAndConstraints.maximumY, transform.position.z); } if (transform.position.z < _cameraDefaultsAndConstraints.minimumZ) { transform.position = new Vector3(transform.position.x, transform.position.y, _cameraDefaultsAndConstraints.minimumZ); } else if (transform.position.z > _cameraDefaultsAndConstraints.maximumZ) { transform.position = new Vector3(transform.position.x, transform.position.y, _cameraDefaultsAndConstraints.maximumZ); } if (_camera.orthographicSize > _cameraDefaultsAndConstraints.maximumOrthographicSize) { _camera.orthographicSize = _cameraDefaultsAndConstraints.maximumOrthographicSize; } else if (_camera.orthographicSize < _cameraDefaultsAndConstraints.minimumOrthographicSize) { _camera.orthographicSize = _cameraDefaultsAndConstraints.minimumOrthographicSize; } } }