1. 程式人生 > 其它 >Unity黑魂復刻經典教程心得(三)-CameraController

Unity黑魂復刻經典教程心得(三)-CameraController

技術標籤:web 3D開發

PlayerHandle->CameraHandle->MainCamera

為啥要有兩層容器,如果都在一層是,是不對的,同時進行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是個啥?不是陣列?是物件?