Firstborn/Assets/AwesomeTechnologies/VegetationStudioPro/Runtime/Utility/ExtendedFlycam.cs

50 lines
2.0 KiB
C#
Raw Normal View History

using UnityEngine;
namespace AwesomeTechnologies.Demo
{
public class ExtendedFlycam : MonoBehaviour
{
public float CameraSensitivity = 90;
public float ClimbSpeed = 4;
public float NormalMoveSpeed = 10;
public float SlowMoveFactor = 0.25f;
public float FastMoveFactor = 3;
private float _rotationX;
private float _rotationY;
// ReSharper disable once UnusedMember.Local
private void Start()
{
_rotationX = transform.eulerAngles.y;
}
// ReSharper disable once UnusedMember.Local
private void Update()
{
if (Input.GetMouseButton(1))
{
_rotationX += Input.GetAxis("Mouse X") * CameraSensitivity * Time.deltaTime;
_rotationY += Input.GetAxis("Mouse Y") * CameraSensitivity * Time.deltaTime;
_rotationY = Mathf.Clamp(_rotationY, -90, 90);
}
Quaternion targetRotation = Quaternion.AngleAxis(_rotationX, Vector3.up);
targetRotation *= Quaternion.AngleAxis(_rotationY, Vector3.left);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 4f);
float speedFactor = 1f;
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) speedFactor = FastMoveFactor;
if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) speedFactor = SlowMoveFactor;
transform.position += transform.forward * NormalMoveSpeed * speedFactor * Input.GetAxis("Vertical") *
Time.deltaTime;
transform.position += transform.right * NormalMoveSpeed * speedFactor * Input.GetAxis("Horizontal") *
Time.deltaTime;
float upAxis = 0;
if (Input.GetKey(KeyCode.Q)) upAxis = -0.5f;
if (Input.GetKey(KeyCode.E)) upAxis = 0.5f;
transform.position += transform.up * NormalMoveSpeed * speedFactor * upAxis * Time.deltaTime;
}
}
}