效果
我们需要实现简易的,泛用性高的第三人称相机跟随,通过鼠标滚轮可以控制与对象物体的远近距离,按住鼠标右键拖动鼠标可以控制相机视角跟随物体旋转,并且相机始终朝向游戏对象。
实现步骤
1.在层级区域把主相机拖入玩家物体作为玩家的子层级,并且调整好适当的距离。
2.因为后期会用到标签查找,所以需要在右上角Inspector区域把玩家的标签设置为“Player”。文章来源:https://www.toymoban.com/news/detail-504262.html
3.创建脚本,脚本名称为“CameraFollow”,创建完后挂载到相机上。(脚本名称也可以自拟,但是复制时要注意名字,Unity中的代码文件名和代码中的命名空间一定要一致)文章来源地址https://www.toymoban.com/news/detail-504262.html
编辑脚本(逻辑和参数含义已注释):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraFollow : MonoBehaviour {
private Transform player;//玩家位置
private Vector3 offsetPosition; //位置偏移
private bool mouse1Down;//是否按下鼠标右键
public float distance;
public float scrollSpeed = 10;//视野远近变化的速度
public float RotateSpeed = 2;//相机镜头转向的速度
void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;//查找对象
transform.LookAt(player.position);//相机指向player
offsetPosition = transform.position - player.position;//计算位置偏移量
}
void Update()
{
transform.position = offsetPosition + player.position;//更新相机位置
Rotate();
Scroll();
}
void Scroll()//鼠标滑轮拉近拉远视野
{
distance = offsetPosition.magnitude;//把偏移向量的模长赋值
distance -= Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;
distance = Mathf.Clamp(distance, 2, 20);//限制镜头缩放最远以及最近距离
offsetPosition = offsetPosition.normalized * distance;//更新偏移向量
}
void Rotate()//按下鼠标右键后移动鼠标更新视角
{
if (Input.GetMouseButtonDown(1))//按下鼠标右键
{
mouse1Down = true;
}
if (Input.GetMouseButtonUp(1))//弹起鼠标右键
{
mouse1Down = false;
}
if (mouse1Down)//设置鼠标左右移动后相机的位置变化
{
transform.RotateAround(player.position, player.up, RotateSpeed * Input.GetAxis("Mouse X"));//设置水平环绕旋转
Vector3 originalPos = transform.position;
Quaternion originalRotation = transform.rotation;
transform.RotateAround(player.position, transform.right, -RotateSpeed * Input.GetAxis("Mouse Y"));//设置竖直环绕旋转
//垂直和水平都会影响两个值
float x = transform.eulerAngles.x;
if (x < 10 || x > 80)//限制最大、最小俯仰角度
{
transform.position = originalPos;
transform.rotation = originalRotation;
}
}
offsetPosition = transform.position - player.position;
}
}
到了这里,关于Unity如何实现第三人称相机跟随的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!