58 lines
1.7 KiB
C#
58 lines
1.7 KiB
C#
|
using UnityEngine;
|
|||
|
|
|||
|
namespace GPUInstancer
|
|||
|
{
|
|||
|
// Inspired by http://forum.unity3d.com/threads/fly-cam-simple-cam-script.67042/
|
|||
|
public class FlyCamera : MonoBehaviour
|
|||
|
{
|
|||
|
public float mainSpeed = 10.0f;
|
|||
|
public float shiftSpeed = 30.0f;
|
|||
|
public float rotationSpeed = 5.0f;
|
|||
|
|
|||
|
private Vector3 _inputVector;
|
|||
|
private Vector3 _rotationEuler;
|
|||
|
|
|||
|
void Start()
|
|||
|
{
|
|||
|
_inputVector = Vector3.zero;
|
|||
|
_rotationEuler = transform.rotation.eulerAngles;
|
|||
|
}
|
|||
|
|
|||
|
void Update()
|
|||
|
{
|
|||
|
if (Input.GetMouseButton(1))
|
|||
|
{
|
|||
|
_rotationEuler.x -= Input.GetAxis("Mouse Y") * rotationSpeed;
|
|||
|
_rotationEuler.y += Input.GetAxis("Mouse X") * rotationSpeed;
|
|||
|
transform.eulerAngles = _rotationEuler;
|
|||
|
}
|
|||
|
|
|||
|
CalculateInputVector();
|
|||
|
|
|||
|
transform.Translate(_inputVector);
|
|||
|
}
|
|||
|
|
|||
|
private void CalculateInputVector()
|
|||
|
{
|
|||
|
_inputVector.x = 0;
|
|||
|
_inputVector.y = 0;
|
|||
|
_inputVector.z = 0;
|
|||
|
if (Input.GetKey(KeyCode.W))
|
|||
|
_inputVector.z += 1;
|
|||
|
if (Input.GetKey(KeyCode.S))
|
|||
|
_inputVector.z -= 1;
|
|||
|
if (Input.GetKey(KeyCode.A))
|
|||
|
_inputVector.x -= 1;
|
|||
|
if (Input.GetKey(KeyCode.D))
|
|||
|
_inputVector.x += 1;
|
|||
|
if (Input.GetKey(KeyCode.Q))
|
|||
|
_inputVector.y -= 1;
|
|||
|
if (Input.GetKey(KeyCode.E))
|
|||
|
_inputVector.y += 1;
|
|||
|
if (Input.GetKey(KeyCode.LeftShift))
|
|||
|
_inputVector *= Time.deltaTime * shiftSpeed;
|
|||
|
else
|
|||
|
_inputVector *= Time.deltaTime * mainSpeed;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|