1、挂载在摄像机上的脚本:MyCamera.cs
![挂载在摄像机上](https://img-blog.csdnimg.cn/8713ac6cecc24090af3a5c659554b7c6.png#pic_center)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyCamera : MonoBehaviour
{
[Header("控制摄像机旋转的灵敏度")]
public float mouseMoveSpeed = 2f;
[Header("摄像机要跟随的物体")]
public Transform playerTransfrom;
[Header("被跟随物体与摄像机之间的距离")]
public float direction = 5f;
private float moveX;
private float moveY;
private void Update()
{
moveX += Input.GetAxis("Mouse X") * mouseMoveSpeed;
moveY -= Input.GetAxis("Mouse Y") * mouseMoveSpeed;
moveY = Mathf.Clamp(moveY, -90f, 90f);
transform.eulerAngles = new Vector3(moveY, moveX, 0);
transform.position = playerTransfrom.position - transform.forward * direction;
}
}
2、挂载在角色上的脚本:Player.cs
![角色上的脚本](https://img-blog.csdnimg.cn/0ee10fc96c05490f8d902448cd1b93f9.png#pic_center)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float smoothTime = 0.3f;
public float walkSpeed = 2f;
private float currentVelocity;
private Transform cameraTransfrom;
void Start()
{
cameraTransfrom = Camera.main.transform;
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
Vector2 inputDir = input.normalized;
float targetRotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg + cameraTransfrom.eulerAngles.y;
if (inputDir != Vector2.zero)
{
transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, targetRotation, ref currentVelocity, smoothTime);
transform.Translate(transform.forward * walkSpeed * Time.deltaTime, Space.World);
}
}
}