Files
3d-ybskdq/Assets/Artwork/MeiGongZiYuan/FlyCamera.cs
zhangjiajia dcf1199970 fix:1
2026-03-05 11:30:53 +08:00

52 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
public class FlyCamera : MonoBehaviour
{
public float movementSpeed = 10.0f; // 基础移动速度
public float fastSpeed = 50.0f; // 加速移动速度(按住 Shift
public float mouseSensitivity = 3.0f; // 鼠标灵敏度
private float yaw = 0.0f; // 水平旋转角度
private float pitch = 0.0f; // 垂直旋转角度
void Start()
{
// 锁定并隐藏鼠标光标
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
void Update()
{
// 鼠标控制视角
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
yaw += mouseX;
pitch -= mouseY;
pitch = Mathf.Clamp(pitch, -90f, 90f); // 限制垂直旋转角度
transform.eulerAngles = new Vector3(pitch, yaw, 0.0f);
// 键盘控制移动
float currentSpeed = Input.GetKey(KeyCode.LeftShift) ? fastSpeed : movementSpeed;
Vector3 direction = new Vector3();
if (Input.GetKey(KeyCode.W))
direction += transform.forward;
if (Input.GetKey(KeyCode.S))
direction -= transform.forward;
if (Input.GetKey(KeyCode.A))
direction -= transform.right;
if (Input.GetKey(KeyCode.D))
direction += transform.right;
if (Input.GetKey(KeyCode.Space))
direction += transform.up;
if (Input.GetKey(KeyCode.LeftControl))
direction -= transform.up;
transform.position += direction.normalized * currentSpeed * Time.deltaTime;
}
}