摄像机就是我们在游戏中的眼睛,设游戏开开发必不可少的物体,今天主要讲摄像机的跟随和鼠标控制谁相机的视角移动。
摄像机的跟随
public class FllowPlayer : MonoBehaviour {
private Transform player;
private Vector3 pos;//摄像机准备照射的位置
private float speed=3f;
void Start () {
player = GameObject.FindWithTag("Player").transform;//获取玩家位置
}
// Update is called once per frame
void Update () {
pos=player.position+Vector3.up*up-player.forward*away;//摄像机跟随玩家
transform.position=Vector3.Lerp(transform.position,pos,speed*Time.deltaTime);//用差值让摄像机移动更加平滑
transform.LookAt(player.position);//摄像机始终看向玩家的位置
}
}
摄像机的操作
通过鼠标的左右移动实现镜头的左右移动
通过鼠标的上下移动控制人物的抬头和低头
通过鼠标的滚轮控制镜头的放大和缩小
public class FllowPlayer : MonoBehaviour {
private Vector3 cameratRotation;
private float cspeed = 2f;
public float up = 3f,away=4f;
void Start () {
}
void Update ()
{
CameraChange();
}
void CameraChange()
{
//滚轮实现镜头放大缩小 获取鼠标水平、垂直轴和滚轮
float x = Input.GetAxis("Mouse X");
float y = Input.GetAxis("Mouse Y");
float z = Input.GetAxis("Mouse ScrollWheel");
if(z<0)
{
if(Camera.main.fieldOfView<90)//fieldOfView摄像机的放大缩小组件的属性
{
Camera.main.fieldOfView += 2;
}
}
if (z > 0)
{
if (Camera.main.fieldOfView > 30)
{
Camera.main.fieldOfView -= 2;
}
}
//根据鼠标已从镜头旋转
cameratRotation.x-=y*cspeed;
cameratRotation.y+=x*cspeed;
cameratRotation.x = Mathf.Clamp(cameratRotation.x, -30, 30);//限制抬头和低头的范围
transform.rotation = Quaternion.Euler(cameratRotation.x, cameratRotation.y, 0);//相机旋转
player.rotation = Quaternion.Euler(0, cameratRotation.y, 0);//玩家沿着y轴一起旋转
}
}