| | using UnityEngine; |
| |
|
| | namespace Unity.MLAgentsExamples |
| | { |
| | public class FlyCamera : MonoBehaviour |
| | { |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | public float mainSpeed = 100.0f; |
| | public float shiftAdd = 250.0f; |
| | public float maxShift = 1000.0f; |
| | public float camSens = 0.25f; |
| | public bool rotateOnlyIfMousedown = true; |
| | public bool movementStaysFlat = true; |
| |
|
| | Vector3 |
| | m_LastMouse = |
| | new Vector3(255, 255, |
| | 255); |
| |
|
| | float m_TotalRun = 1.0f; |
| |
|
| | void Awake() |
| | { |
| | Debug.Log("FlyCamera Awake() - RESETTING CAMERA POSITION"); |
| | |
| | |
| | |
| | transform.position = new Vector3(0, 8, -32); |
| | transform.rotation = Quaternion.Euler(25, 0, 0); |
| | } |
| |
|
| | void Update() |
| | { |
| | if (Input.GetMouseButtonDown(1)) |
| | { |
| | m_LastMouse = Input.mousePosition; |
| | } |
| |
|
| | if (!rotateOnlyIfMousedown || |
| | (rotateOnlyIfMousedown && Input.GetMouseButton(1))) |
| | { |
| | m_LastMouse = Input.mousePosition - m_LastMouse; |
| | m_LastMouse = new Vector3(-m_LastMouse.y * camSens, m_LastMouse.x * camSens, 0); |
| | m_LastMouse = new Vector3(transform.eulerAngles.x + m_LastMouse.x, |
| | transform.eulerAngles.y + m_LastMouse.y, 0); |
| | transform.eulerAngles = m_LastMouse; |
| | m_LastMouse = Input.mousePosition; |
| | |
| | } |
| |
|
| | |
| | var p = GetBaseInput(); |
| | if (Input.GetKey(KeyCode.LeftShift)) |
| | { |
| | m_TotalRun += Time.deltaTime; |
| | p = shiftAdd * m_TotalRun * p; |
| | p.x = Mathf.Clamp(p.x, -maxShift, maxShift); |
| | p.y = Mathf.Clamp(p.y, -maxShift, maxShift); |
| | p.z = Mathf.Clamp(p.z, -maxShift, maxShift); |
| | } |
| | else |
| | { |
| | m_TotalRun = Mathf.Clamp(m_TotalRun * 0.5f, 1f, 1000f); |
| | p = p * mainSpeed; |
| | } |
| |
|
| | p = p * Time.deltaTime; |
| | var newPosition = transform.position; |
| | if (Input.GetKey(KeyCode.Space) |
| | || (movementStaysFlat && !(rotateOnlyIfMousedown && Input.GetMouseButton(1)))) |
| | { |
| | |
| | transform.Translate(p); |
| | newPosition.x = transform.position.x; |
| | newPosition.z = transform.position.z; |
| | transform.position = newPosition; |
| | } |
| | else |
| | { |
| | transform.Translate(p); |
| | } |
| | } |
| |
|
| | Vector3 GetBaseInput() |
| | { |
| | |
| | var pVelocity = new Vector3(); |
| | if (Input.GetKey(KeyCode.W)) |
| | { |
| | pVelocity += new Vector3(0, 0, 1); |
| | } |
| |
|
| | if (Input.GetKey(KeyCode.S)) |
| | { |
| | pVelocity += new Vector3(0, 0, -1); |
| | } |
| |
|
| | if (Input.GetKey(KeyCode.A)) |
| | { |
| | pVelocity += new Vector3(-1, 0, 0); |
| | } |
| |
|
| | if (Input.GetKey(KeyCode.D)) |
| | { |
| | pVelocity += new Vector3(1, 0, 0); |
| | } |
| |
|
| | return pVelocity; |
| | } |
| | } |
| | } |
| |
|