87 lines
2.2 KiB
C#
87 lines
2.2 KiB
C#
namespace UnityEngine.AzureSky
|
|
{
|
|
public class AzureFlyCamera : MonoBehaviour
|
|
{
|
|
public float mainSpeed = 100f;
|
|
|
|
public float shiftAdd = 250f;
|
|
|
|
public float maxShift = 1000f;
|
|
|
|
public float camSens = 0.25f;
|
|
|
|
public bool rotateOnlyIfMousedown = true;
|
|
|
|
public bool movementStaysFlat = true;
|
|
|
|
private Vector3 lastMouse = new Vector3(255f, 255f, 255f);
|
|
|
|
private float totalRun = 1f;
|
|
|
|
private void Update()
|
|
{
|
|
if (Input.GetMouseButtonDown(1))
|
|
{
|
|
lastMouse = Input.mousePosition;
|
|
}
|
|
if (!rotateOnlyIfMousedown || (rotateOnlyIfMousedown && Input.GetMouseButton(1)))
|
|
{
|
|
lastMouse = Input.mousePosition - lastMouse;
|
|
lastMouse = new Vector3((0f - lastMouse.y) * camSens, lastMouse.x * camSens, 0f);
|
|
lastMouse = new Vector3(base.transform.eulerAngles.x + lastMouse.x, base.transform.eulerAngles.y + lastMouse.y, 0f);
|
|
base.transform.eulerAngles = lastMouse;
|
|
lastMouse = Input.mousePosition;
|
|
}
|
|
Vector3 vector = GetBaseInput();
|
|
if (Input.GetKey(KeyCode.LeftShift))
|
|
{
|
|
totalRun += Time.deltaTime;
|
|
vector = vector * totalRun * shiftAdd;
|
|
vector.x = Mathf.Clamp(vector.x, 0f - maxShift, maxShift);
|
|
vector.y = Mathf.Clamp(vector.y, 0f - maxShift, maxShift);
|
|
vector.z = Mathf.Clamp(vector.z, 0f - maxShift, maxShift);
|
|
}
|
|
else
|
|
{
|
|
totalRun = Mathf.Clamp(totalRun * 0.5f, 1f, 1000f);
|
|
vector *= mainSpeed;
|
|
}
|
|
vector *= Time.deltaTime;
|
|
Vector3 position = base.transform.position;
|
|
if (Input.GetKey(KeyCode.Space) || (movementStaysFlat && (!rotateOnlyIfMousedown || !Input.GetMouseButton(1))))
|
|
{
|
|
base.transform.Translate(vector);
|
|
position.x = base.transform.position.x;
|
|
position.z = base.transform.position.z;
|
|
base.transform.position = position;
|
|
}
|
|
else
|
|
{
|
|
base.transform.Translate(vector);
|
|
}
|
|
}
|
|
|
|
private Vector3 GetBaseInput()
|
|
{
|
|
Vector3 result = default(Vector3);
|
|
if (Input.GetKey(KeyCode.W))
|
|
{
|
|
result += new Vector3(0f, 0f, 1f);
|
|
}
|
|
if (Input.GetKey(KeyCode.S))
|
|
{
|
|
result += new Vector3(0f, 0f, -1f);
|
|
}
|
|
if (Input.GetKey(KeyCode.A))
|
|
{
|
|
result += new Vector3(-1f, 0f, 0f);
|
|
}
|
|
if (Input.GetKey(KeyCode.D))
|
|
{
|
|
result += new Vector3(1f, 0f, 0f);
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|