using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
private Transform player;
private Vector3 offset;
public float distance;
void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
offset = transform.position - player.position;
}
void Update()
{
transform.position = offset + player.position;
//这两个方法的顺序不能调换
RotateView();
ScrollView();
}
/// <summary>
/// 滚轮实现视野的放大和缩小
/// </summary>
void ScrollView()
{
//得到相机和人物的距离
distance = offset.magnitude;
//得到鼠标滚轮的滑动
distance += -Input.GetAxis("Mouse ScrollWheel") * 10;
distance = Mathf.Clamp(distance, 4, 20);
//取得offset的单位向量,乘distance表示方向不变距离变成distance
//normalized:把向量转为单位向量(方向不变,长度变为1)方便运算
offset = offset.normalized * distance;
}
/// <summary>
///鼠标滑动实现相机围绕玩家旋转
/// </summary>
void RotateView()
{
//x得到鼠标水平方向的滑动
float x = Input.GetAxis("Mouse X");
transform.RotateAround(player.position, Vector3.up, x * 7);
Vector3 Pos = transform.position;
Quaternion r = transform.rotation;
//y得到鼠标垂直方向的滑动
float y = Input.GetAxis("Mouse Y");
transform.RotateAround(player.position, -transform.right, y * 7);
float c = transform.eulerAngles.x;
if (c < 10 || c > 80)
{
transform.position = Pos;
transform.rotation = r;
}
offset = transform.position - player.position;
}
}
第三人称相机处理
最新推荐文章于 2024-04-29 00:46:25 发布