using UnityEngine; using System.Collections; public class FirstPersonFlyingController : MonoBehaviour { public float speed = 1.0f; public Transform cameraTransform; Transform t; Vector3 movementVectorSmooth; Vector3 rotationVectorSmooth; public GameObject checkSphere; public bool dontRequireClick = false; public bool limitPosition = false; public Vector3 minPosition; public Vector3 maxPosition; // Use this for initialization void Start () { t = GetComponent(); } void LateUpdate () { // if (DemoAnimation.instance.demoMode == DemoAnimation.DemoMode.Interactive) // { Movement(); MouseLook(); //if (Input.GetKey(KeyCode.F)) //{ //checkSphere.transform.position = cameraTransform.position + cameraTransform.forward * 2.0f; //} // } } void Movement() { Vector3 movementVector = Vector3.zero; if (Input.GetKey(KeyCode.W)) movementVector.z += 1.0f; if (Input.GetKey(KeyCode.S)) movementVector.z -= 1.0f; if (Input.GetKey(KeyCode.A)) movementVector.x -= 1.0f; if (Input.GetKey(KeyCode.D)) movementVector.x += 1.0f; if (Input.GetKey(KeyCode.Space)) movementVector.y += 1.0f; if (Input.GetKey(KeyCode.LeftShift)) movementVector.y -= 1.0f; movementVector = Vector3.Normalize(movementVector); // movementVector *= Input.GetKey(KeyCode.LeftAlt) ? 0.2f : 1.0f; movementVectorSmooth = Vector3.Lerp(movementVectorSmooth, movementVector, 5.0f * Time.deltaTime); t.Translate(movementVectorSmooth * 9.0f * Time.deltaTime * speed); if (limitPosition) { Vector3 pos = t.position; pos.x = Mathf.Clamp(pos.x, minPosition.x, maxPosition.x); pos.y = Mathf.Clamp(pos.y, minPosition.y, maxPosition.y); pos.z = Mathf.Clamp(pos.z, minPosition.z, maxPosition.z); t.position = pos; } } void MouseLook() { Vector3 rotationVector = Vector3.zero; if (Input.GetKey(KeyCode.Mouse0) || dontRequireClick) { rotationVector.y += (Input.GetAxis("Mouse X")) * 1.00f; rotationVector.x -= (Input.GetAxis("Mouse Y")) * 1.00f; } rotationVectorSmooth = Vector3.Lerp(rotationVectorSmooth, rotationVector, 5.0f * Time.deltaTime); t.Rotate(new Vector3(0.0f, rotationVectorSmooth.y * 2.0f, 0.0f)); cameraTransform.Rotate(Vector3.right * rotationVectorSmooth.x * 2.0f); } }