欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity黑魂复刻经典教程心得(三)-CameraController

程序员文章站 2022-03-26 17:23:32
...

 

 

PlayerHandle->CameraHandle->MainCamera

Unity黑魂复刻经典教程心得(三)-CameraController

为啥要有两层容器,如果都在一层是,是不对的,同时进行X和Y轴旋转,会有问题

 

根据输入来控制rotation

MouseSensitivity是鼠标敏感度,Input.GetAxis获取的是鼠标的位移量,不是绝对位置

相机的初始位置和目标的eularAngles保持一直

mouseY = currentTarget.eulerAngles.x;
mouseX = currentTarget.eulerAngles.y;
var Y = Input.GetAxis(rotateCameraYInput);
var X = Input.GetAxis(rotateCameraXInput);
public void RotateCamera(float x, float y)
    {
        // free rotation 
        mouseX += x * xMouseSensitivity;
        mouseY -= y * yMouseSensitivity;

        movementSpeed.x = x;
        movementSpeed.y = -y;
        if (!lockCamera)
        {
            mouseY = vExtensions.ClampAngle(mouseY, yMinLimit, yMaxLimit);
            mouseX = vExtensions.ClampAngle(mouseX, xMinLimit, xMaxLimit);
        }
        else
        {
            mouseY = currentTarget.root.localEulerAngles.x;
            mouseX = currentTarget.root.localEulerAngles.y;
        }
    }

 

 

更加角色的位置来计算camera的位置

锁定模式下的

1、camera的position

 

 

 

2、camera的rotation水平和垂直的选择

水平旋转的时候,只需要转动PlayerHandle,垂直旋转的时候只需要旋转CameraHandle

可以配置horizontalSpeed和verticalSpeed

 

3、相机抖动问题

 

同位角问题??

同位角问题??限制相机上下旋转角度的时候会遇到

 

啥是欧拉角?四元数??

gameObject.transform是个啥?不是数组?是对象?

相关标签: web 3D开发