void UpdateCameraLocked(float distDelta, float xDelta, float yDelta) { //First rotate the player's character if (!Mathf.Approximately(xDelta, 0f)) { float sign = Mathf.Sign(xDelta); m_playerController.Turn(sign * 55f + (xDelta * 100f), (sign < 0) ? false : true); } //Now update the camera position y -= yDelta; y = MiscHelpers.ClampAngle(y, yMinLimit, yMaxLimit); Quaternion rotation = Quaternion.Euler(y, m_curCharacterTarget.transform.rotation.eulerAngles.y, 0f); distance = Mathf.Clamp(distance - distDelta * 5, distanceMin, distanceMax); RaycastHit hit; if (Physics.Linecast(target.position, transform.position, out hit, 1 << LayerMask.NameToLayer("Terrain"))) { distance -= hit.distance; } Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance); Vector3 position = rotation * negDistance + target.position; transform.rotation = rotation; transform.position = position; }
void UpdateCamera(float xScreenDelta, float yScreenDelta) { if (target) { target.transform.root.Rotate(Vector3.up, 45f * xScreenDelta * Time.deltaTime); float Yrotation = target.transform.root.rotation.eulerAngles.y; Vector3 position = target.position; x += yScreenDelta; x = MiscHelpers.ClampAngle(x, yMinLimit, yMaxLimit); Vector3 rotation = new Vector3(x, Yrotation, 0); transform.rotation = Quaternion.Euler(rotation); transform.position = position; } }
void UpdateCameraFree(float distDelta, float xDelta, float yDelta) { x += xDelta; //Input.GetAxis("Mouse X") * xSpeed /** distance*/ * 0.02f; y -= yDelta; //Input.GetAxis("Mouse Y") * ySpeed * 0.02f; y = MiscHelpers.ClampAngle(y, yMinLimit, yMaxLimit); Quaternion rotation = Quaternion.Euler(y, x, 0); distance = Mathf.Clamp(distance - distDelta * 5, distanceMin, distanceMax); RaycastHit hit; if (Physics.Linecast(target.position, transform.position, out hit, 1 << LayerMask.NameToLayer("Terrain"))) { distance -= hit.distance; } Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance); Vector3 position = rotation * negDistance + target.position; transform.rotation = rotation; transform.position = position; }