一、飞行相机代码展示:
UpDown需要在如下添加A、D键
using System;
using UnityEngine;
public class FlightCamera : MonoBehaviour
{
public Transform flyCamera;
public float translationSpeed = 5f;
public float runTranslationSpeed = 10f;
public float rotationSpeed = 100f;
public float rotationMultiplier = 2f; // 控制旋转速度的倍数
// public float minRotationAngle = -80f; // 最小旋转角度
// public float maxRotationAngle = 80f; // 最大旋转角度
private Vector3 posInit;
private Vector3 rotInit;
private Vector3 flyCameraPosInit;
void Awake()
{
posInit = this.transform.position;
rotInit = this.transform.eulerAngles;
flyCameraPosInit = flyCamera.transform.localEulerAngles;
}
public void StartFlyCamera()
{
this.transform.position = posInit;
this.transform.eulerAngles = rotInit;
flyCamera.transform.localEulerAngles = flyCameraPosInit;
}
void Update()
{
var _translationSpeed = Input.GetKey(KeyCode.LeftShift) ? runTranslationSpeed : translationSpeed;
// 前后移动
float verticalInput = Input.GetAxis("Vertical");
transform.Translate(Vector3.forward * verticalInput * _translationSpeed * Time.deltaTime);
// 上下平移
float upDownInput = Input.GetAxis("UpDown");
transform.Translate(Vector3.up * upDownInput * _translationSpeed * Time.deltaTime);
// 左右旋转
float horizontalInput = Input.GetAxis("Horizontal");
transform.Rotate(Vector3.up, horizontalInput * rotationSpeed * Time.deltaTime);
// 鼠标右键按下并上下滑动控制 X 轴旋转
if (Input.GetMouseButton(1))
{
float mouseY = Input.GetAxis("Mouse Y") * rotationSpeed * rotationMultiplier * Time.