unity3D技术分享Unity3D与游戏开发

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

2020-02-22  本文已影响0人  Never肥宅

学习内容: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;

上一篇下一篇

猜你喜欢

热点阅读