美文网首页unity3D技术分享Unity3D与游戏开发
Unity3D 学习笔记(四) 自由变换摄像头视角

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

作者: Never肥宅 | 来源:发表于2020-02-22 17:46 被阅读0次

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

    相关文章

      网友评论

        本文标题:Unity3D 学习笔记(四) 自由变换摄像头视角

        本文链接:https://www.haomeiwen.com/subject/vxtrqhtx.html