Unity Camera 的跟踪,转动,缩放,代码教程
适合做角色的第一,第三人称视角
1.代码挂载到摄像机 camera上,
Player是你要跟踪物体的位置(把你要跟踪的物体放上就行)
2.源代码
using UnityEngine;
using System.Collections;
public class Camera_Move : MonoBehaviour
{
//摄像头跟踪
public Transform m_Player;
Vector3 offset;
//摄像头转动
public float speed_Hor = 9f;
public float speed_Vert = 9f;
private float rotationX = 0;
//摄像头缩放
private Camera c_Camera;
void Awake ()
{
//通过tag找到人物组件
m_Player =m_Player.GetComponent<Transform>();
c_Camera = GetComponent<Camera>();
}
void Start ()
{
//玩家与摄像机之间的偏移量
offset = m_Player.position - transform.position;
}
//物理引擎相关的放到FixedUpdate中
void LateUpdate()
{
transform.position = m_Player.position - offset;
Camera_Roate();
Camera_Scaling();
}
/// <summary>
/// 摄像机转动
/// </summary>
public void Camera_Roate()
{
if (Input.GetMouseButton(0))
{
rotationX -= Input.GetAxis("Mouse Y") * speed_Vert;
//旋转限制范围
rotationX = Mathf.Clamp(rotationX, -50, 50);
float delta = Input.GetAxis("Mouse X") * speed_Hor;
float rotationY = transform.localEulerAngles.y + delta;
//旋转限制范围
rotationY = Mathf.Clamp(rotationY, -360, 360);
this.transform.eulerAngles = new Vector3(rotationX, rotationY, 0);
}
}
/// <summary>
/// 摄像机缩放
/// </summary>
public void Camera_Scaling()
{
if (Input.GetAxis("Mouse ScrollWheel") < 0)
{
if (Camera.main.fieldOfView <= 70) //小于一个放大范围后就不继续放大了
{
Camera.main.fieldOfView += 5;
}
}
if (Input.GetAxis("Mouse ScrollWheel") > 0)
{
if (Camera.main.fieldOfView >= 30) //小于一个放大范围后就不继续放大了
{
Camera.main.fieldOfView -= 5;
}
}
}
}