| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using UnityEngine;
- using System.Collections;
- namespace TobyFredson
- {
- public class ExtendedFlycam : MonoBehaviour
- {
- /*
- EXTENDED FLYCAM
- Desi Quintans (CowfaceGames.com), 17 August 2012.
- Based on FlyThrough.js by Slin (http://wiki.unity3d.com/index.php/FlyThrough), 17 May 2011.
-
- LICENSE
- Free as in speech, and free as in beer.
-
- FEATURES
- WASD/Arrows: Movement
- Q: Climb
- E: Drop
- Shift: Move faster
- Control: Move slower
- End: Toggle cursor locking to screen (you can also press Ctrl+P to toggle play mode on and off).
- */
- public float cameraSensitivity = 3;
- public float climbSpeed = 4;
- public float normalMoveSpeed = 10;
- public float slowMoveFactor = 0.25f;
- public float fastMoveFactor = 3;
- private float rotationX = 0.0f;
- private float rotationY = 0.0f;
- void Start()
- {
- Cursor.lockState = CursorLockMode.Locked;
- }
- void Update()
- {
- rotationX += Input.GetAxis("Mouse X") * cameraSensitivity ;
- rotationY += Input.GetAxis("Mouse Y") * cameraSensitivity ;
- rotationY = Mathf.Clamp(rotationY, -90, 90);
- if (Mathf.Abs(Input.GetAxis("Mouse X")) > 0 || Mathf.Abs(Input.GetAxis("Mouse Y")) > 0)
- {
- transform.localRotation = Quaternion.AngleAxis(rotationX, Vector3.up);
- transform.localRotation *= Quaternion.AngleAxis(rotationY, Vector3.left);
- }
- if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
- {
- transform.position += transform.forward * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime;
- transform.position += transform.right * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime;
- }
- else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
- {
- transform.position += transform.forward * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime;
- transform.position += transform.right * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime;
- }
- else
- {
- if (Mathf.Abs(Input.GetAxis("Vertical")) > 0 || Mathf.Abs(Input.GetAxis("Horizontal")) > 0)
- {
- transform.position += transform.forward * normalMoveSpeed * Input.GetAxis("Vertical") * Time.deltaTime;
- transform.position += transform.right * normalMoveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime;
- }
- }
- if (Input.GetKey(KeyCode.Q)) { transform.position += transform.up * climbSpeed * Time.deltaTime; }
- if (Input.GetKey(KeyCode.E)) { transform.position -= transform.up * climbSpeed * Time.deltaTime; }
- }
- }
- }
|