//Camera Follow
using System.Transactions;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
private Vector3 _playerCameraRotation;
private float _defaultDistance = 8f;
private float _xmove;
private float _ymove;
private float _rotateZoom = 100;
public Transform target {
get; set; }
//在上下方向上 不能360 只能180
/// <summary>
/// Update is called every frame, if the MonoBehaviour is enabled.
/// </summary>
/// <summary>
/// Awake is called when the script instance is being loaded.
/// </summary>
private void Start()
{
target = GameObject.FindGameObjectWithTag("Player").transform;
DefaultSetting();
}
private void Update()
{
GetMouseAxis();
CameraRotate();
ThroughWallMonitor();
}
/// <summary>
/// LateUpdate is called every frame, if the Behaviour is enabled.
/// It is called after all Update functions have been called.
/// </summary>
private void FixedUpdate()
{
CameraMove();
}
private void GetMouseAxis()
{
_xmove = Input.GetAxis("Mouse X");
_ymove = Input.GetAxis("Mouse Y");
}
private void CameraRotate()
{
Vector3 center = target.transform.position;
//y方向转向始终是绕模型中心转动
float eulerAngles_X = transform.rotation.eulerAngles.x;
if (eulerAngles_X > 270) eulerAngles_X -= 360;
if (!(eulerAngles_X > 80 && _ymove > 0 || eulerAngles_X < -80 && _ymove < 0))
transform.RotateAround(center, transform.right, _ymove * _rotateZoom * Time
Unity 简单实现第三人称
于 2022-07-14 12:27:14 首次发布