主要参考的是这个博主的代码,如下
因为我要实现的是无人机摄像机巡航的镜头转动,所以我还有一个需求是这个功能可以随时打开和关闭。由此,引入了一个判断的布尔变量,实现点击右键实现开闭。(代码由文心一言改的)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameracontrol : MonoBehaviour
{
public Transform player; // 获取玩家
private float mouseX, mouseY; // 获取鼠标位置
public float mouseSensitivity = 100f; // 鼠标灵敏度
private float xRotation = 0f;
private bool canControlCamera = false; // 控制是否可以旋转摄像机的布尔变量
private void Update()
{
// 检测鼠标右键是否被按下,以切换摄像机控制状态
if (Input.GetMouseButtonDown(1)) // 1 代表鼠标右键
{
canControlCamera = !canControlCamera; // 切换状态
}
if (canControlCamera) // 检查是否可以控制摄像机
{
mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Mathf.Clamp01(Time.deltaTime * 60f);
mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Mathf.Clamp01(Time.deltaTime * 60f);
xRotation -= mouseY; // 摄像机上下视角移动
xRotation = Mathf.Clamp(xRotation, -70f, 70f); // 摄像机上下视角限制
player.Rotate(Vector3.up * mouseX); // 玩家随鼠标旋转
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f); // 摄像机旋转
}
}
}
大功告成。
unity里实现摄像头跟随鼠标转动