mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-12 08:17:38 +02:00
DJ School sounds
This commit is contained in:
145
Assets/Scripts/Common/FreeCam.cs
Normal file
145
Assets/Scripts/Common/FreeCam.cs
Normal file
@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// A simple free camera to be added to a Unity game object.
|
||||
///
|
||||
/// Keys:
|
||||
/// wasd / arrows - movement
|
||||
/// q/e - up/down (local space)
|
||||
/// r/f - up/down (world space)
|
||||
/// pageup/pagedown - up/down (world space)
|
||||
/// hold shift - enable fast movement mode
|
||||
/// right mouse - enable free look
|
||||
/// mouse - free look / rotation
|
||||
///
|
||||
/// </summary>
|
||||
public class FreeCam : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// Normal speed of camera movement.
|
||||
/// </summary>
|
||||
public float movementSpeed = 2f;
|
||||
|
||||
/// <summary>
|
||||
/// Speed of camera movement when shift is held down,
|
||||
/// </summary>
|
||||
public float fastMovementSpeed = 15f;
|
||||
|
||||
/// <summary>
|
||||
/// Sensitivity for free look.
|
||||
/// </summary>
|
||||
public float freeLookSensitivity = 2f;
|
||||
|
||||
/// <summary>
|
||||
/// Amount to zoom the camera when using the mouse wheel.
|
||||
/// </summary>
|
||||
public float zoomSensitivity = 10f;
|
||||
|
||||
/// <summary>
|
||||
/// Amount to zoom the camera when using the mouse wheel (fast mode).
|
||||
/// </summary>
|
||||
public float fastZoomSensitivity = 50f;
|
||||
|
||||
/// <summary>
|
||||
/// Set to true when free looking (on right mouse button).
|
||||
/// </summary>
|
||||
private bool looking = false;
|
||||
|
||||
void Update()
|
||||
{
|
||||
var fastMode = Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift);
|
||||
var movementSpeed = fastMode ? this.fastMovementSpeed : this.movementSpeed;
|
||||
|
||||
if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
|
||||
{
|
||||
transform.position = transform.position + (-transform.right * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
|
||||
{
|
||||
transform.position = transform.position + (transform.right * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
|
||||
{
|
||||
transform.position = transform.position + (transform.forward * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
|
||||
{
|
||||
transform.position = transform.position + (-transform.forward * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.Q))
|
||||
{
|
||||
transform.position = transform.position + (transform.up * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.E))
|
||||
{
|
||||
transform.position = transform.position + (-transform.up * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.R) || Input.GetKey(KeyCode.PageUp))
|
||||
{
|
||||
transform.position = transform.position + (Vector3.up * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.F) || Input.GetKey(KeyCode.PageDown))
|
||||
{
|
||||
transform.position = transform.position + (-Vector3.up * movementSpeed * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (looking)
|
||||
{
|
||||
float newRotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * freeLookSensitivity;
|
||||
float newRotationY = transform.localEulerAngles.x - Input.GetAxis("Mouse Y") * freeLookSensitivity;
|
||||
transform.localEulerAngles = new Vector3(newRotationY, newRotationX, 0f);
|
||||
}
|
||||
|
||||
float axis = Input.GetAxis("Mouse ScrollWheel");
|
||||
if (axis != 0)
|
||||
{
|
||||
var zoomSensitivity = fastMode ? this.fastZoomSensitivity : this.zoomSensitivity;
|
||||
transform.position = transform.position + transform.forward * axis * zoomSensitivity;
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.Mouse1))
|
||||
{
|
||||
StartLooking();
|
||||
}
|
||||
else if (Input.GetKeyUp(KeyCode.Mouse1))
|
||||
{
|
||||
StopLooking();
|
||||
}
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
StopLooking();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable free looking.
|
||||
/// </summary>
|
||||
public void StartLooking()
|
||||
{
|
||||
looking = true;
|
||||
Cursor.visible = false;
|
||||
Cursor.lockState = CursorLockMode.Locked;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disable free looking.
|
||||
/// </summary>
|
||||
public void StopLooking()
|
||||
{
|
||||
looking = false;
|
||||
Cursor.visible = true;
|
||||
Cursor.lockState = CursorLockMode.None;
|
||||
}
|
||||
}
|
11
Assets/Scripts/Common/FreeCam.cs.meta
Normal file
11
Assets/Scripts/Common/FreeCam.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a0e5d5d77f9b8824b997a02d704003ef
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user