Unity3D 学习笔记(四) 自由变换摄像头视角

学习内容:b站傅老师的U3D黑魂复刻课程

Unity3D 学习笔记 自由变换摄像头视角

在角色下创建CameraHandle,将摄像机拖入

PlayerHandle控制水平旋转,CameraHandle控制竖直旋转

定义

public PlayerController pi;

private GameObject playerHandle;

private GameObject cameraHandle;

获取object

void Awake()

{

cameraHandle = transform.parent.gameObject;

playerHandle = cameraHandle.transform.parent.gameObject;

}

使用rotate方法旋转

playerHandle.transform.Rotate(Vector3.up,pi.Jright * 10.0f *Time.deltaTime);

添加速度系数

public float horizontalSpeed = 50.0f;

两个方向的旋转方法调用

void Update()

{

playerHandle.transform.Rotate(Vector3.up,pi.Jright * horizontalSpeed *Time.deltaTime);

cameraHandle.transform.Rotate(Vector3.right,pi.Jup * -verticalSpeed *Time.deltaTime);

}

找到俯角仰角的临界值,设定边界

cameraHandle.transform.eulerAngles = new Vector3(

Mathf.Clamp(cameraHandle.transform.eulerAngles.x,-40,30),0,0);

但是这样俯视可以,仰视会不断鬼畜,注释掉rotate,换一种方法

创建临时变量

tempEulerX -= pi.Jup * verticalSpeed *Time.deltaTime;

tempEulerX = Mathf.Clamp(tempEulerX,-40,30);

cameraHandle.transform.localEulerAngles = new Vector3(

tempEulerX,0,0);

即可实现有边界的视角范围

鼠标控制

如果想要使用鼠标控制的话,可以加入鼠标控制

Jright = Input.GetAxis("Mouse X");

Jup = Input.GetAxis("Mouse Y");

Unity3D 学习笔记 自由变换摄像头视角

延迟镜头

使镜头出现迟滞跟随,当人物静止时候停下来。

Unity3D 学习笔记 自由变换摄像头视角

新建空物体camerapos

camera = Camera.main.gameObject;

获取camera

camera = Camera.main.gameObject;

使camera追随cameraPos

camera.transform.position = Vector3.SmoothDamp(camera.transform.position,transform.position,ref cameraDampVelocity,cameraDampValue);

camera.transform.eulerAngles = transform.eulerAngles;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容