Files
2026-03-04 10:03:45 +08:00

97 lines
3.2 KiB
C#

using System;
using UnityEngine;
namespace Artngame.SKYMASTER.PlanetCreator
{
public class FlyCameraA : MonoBehaviour
{
public float cameraSensitivity = 90f;
public float rollSpeed = 4f;
public float normalMoveSpeed = 10f;
public float slowMoveFactor = 0.25f;
public float fastMoveFactor = 3f;
public float speedMultiplySpeed = 2f;
public float speedMultiply = 1f;
public PlanetCreator planetCreator;
private bool cursorLocked = true;
private Quaternion rotation = Quaternion.identity;
private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
private void Update()
{
if (cursorLocked)
{
base.transform.localRotation *= Quaternion.AngleAxis(Input.GetAxis("Mouse X") * cameraSensitivity, Vector3.up);
base.transform.localRotation *= Quaternion.AngleAxis(Input.GetAxis("Mouse Y") * cameraSensitivity, Vector3.left);
Vector3 vector;
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
{
vector = base.transform.forward * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply;
vector += base.transform.right * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply;
}
else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
{
vector = base.transform.forward * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply;
vector += base.transform.right * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply;
}
else
{
vector = base.transform.forward * normalMoveSpeed * Input.GetAxis("Vertical") * Time.deltaTime * speedMultiply;
vector += base.transform.right * normalMoveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime * speedMultiply;
}
base.transform.position += vector;
speedMultiply *= 1f + Input.GetAxis("Mouse ScrollWheel") * speedMultiplySpeed;
speedMultiply = Mathf.Max(0f, speedMultiply);
if (Input.GetKey(KeyCode.Q))
{
base.transform.localRotation *= Quaternion.AngleAxis(rollSpeed * Time.deltaTime, Vector3.back);
}
if (Input.GetKey(KeyCode.E))
{
base.transform.localRotation *= Quaternion.AngleAxis(rollSpeed * Time.deltaTime, Vector3.forward);
}
}
if (Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Escape))
{
cursorLocked = !cursorLocked;
Cursor.lockState = (cursorLocked ? CursorLockMode.Locked : CursorLockMode.None);
Cursor.visible = !cursorLocked;
}
if (Input.GetKeyDown(KeyCode.C))
{
ScreenCapture.CaptureScreenshot(Application.dataPath.Replace("Assets", "Screenshots") + $"{DateTime.Now:yyyy-MM-dd_hh-mm-ss-tt}" + ".png", 2);
}
if (Input.GetKeyDown(KeyCode.X))
{
Application.Quit();
}
}
private void OnDrawGizmos()
{
if (!(planetCreator == null))
{
PlanetChunkProperties nearestChunkProperties = planetCreator.GetNearestChunkProperties(base.transform.position);
if (nearestChunkProperties != null)
{
Gizmos.DrawWireCube(nearestChunkProperties.Bounds.center, nearestChunkProperties.Bounds.size);
}
}
}
}
}