using UnityEngine; using System.Collections; namespace Dreamteck.Splines.Examples { public class CameraLook : MonoBehaviour { public float sensitivity = 3f; public float dampSpeed = 0f; public float lookRange = 45f; private float x = 0f; private float y = 0f; private float xMove = 0f; private float yMove = 0f; private float crosshairZ = 5f; private float idealCrosshairZ = 3f; public Transform crosshairSphere; // Update is called once per frame void Update() { xMove = Mathf.MoveTowards(xMove, 0f, Time.deltaTime * dampSpeed); yMove = Mathf.MoveTowards(yMove, 0f, Time.deltaTime * dampSpeed); xMove += Input.GetAxis("Mouse X") / 10f; yMove -= Input.GetAxis("Mouse Y") / 10f; xMove = Mathf.Clamp(xMove, -1f, 1f); yMove = Mathf.Clamp(yMove, -1f, 1f); float halfLookRange = lookRange / 2f; x += xMove * Time.deltaTime * sensitivity; y += yMove * Time.deltaTime * sensitivity; if (x > halfLookRange) { x = halfLookRange; if (xMove > 0f) xMove = 0f; } else if (x < -halfLookRange) { x = -halfLookRange; if (xMove < 0f) xMove = 0f; } if (y > halfLookRange) { y = halfLookRange; if (yMove > 0f) yMove = 0f; } else if (y < -halfLookRange) { y = -halfLookRange; if (yMove < 0f) yMove = 0f; } if (crosshairSphere != null && crosshairSphere.gameObject.activeSelf) { idealCrosshairZ += Input.GetAxis("Mouse ScrollWheel") * 4f; idealCrosshairZ = Mathf.Clamp(idealCrosshairZ, 2f, 6f); crosshairZ = Mathf.MoveTowards(crosshairZ, idealCrosshairZ, Time.deltaTime * 8f); Vector3 localPos = crosshairSphere.localPosition; localPos.z = crosshairZ; crosshairSphere.localPosition = localPos; } this.transform.localRotation = Quaternion.AngleAxis(x, Vector3.up) * Quaternion.AngleAxis(y, Vector3.right); } } }