Код: Выделить всё
void MouseLookFirstPerson()
{
float sensNormalized = sensMouseLook*Time.deltaTime; //Cache product of sensitivity and time passed last frame
float deltaY = sensNormalized*Input.GetAxis("Mouse Y"); //Cache requested camera rotation about Y-axis
float deltaX = sensNormalized*Input.GetAxis("Mouse X"); //Cache requested player rotation about X-axis
Vector3 deltaCamera = new Vector3(deltaY, 0, 0); //Cache requested camera orientation change
Vector3 deltaPlayer = new Vector3(0, deltaX, 0); //Cache requested player orientation change
Vector3 newOrientationCamera = Camera.main.transform.localEulerAngles - deltaCamera; //Cache new camera orientation by subtracting requested camera rotation from original camera orientation
Vector3 newOrientationPlayer = transform.eulerAngles + deltaPlayer; //Cache new player orientation by summing requested player rotation and original player orientation
Mathf.Clamp(newOrientationCamera.x, 89, -89); //Clamp new camera orientation to allowed boundaries
transform.eulerAngles = newOrientationPlayer; //Set player orientation to new player orientation
Camera.main.transform.localEulerAngles = newOrientationCamera; //Set camera orientation to new camera orientation
}
< /code>
Метод называется здесь (два других метода находятся в различных состояниях функциональности, но за пределами действия этого вопроса): < /p>
void Update()
{
...
switch (cameraMode)
{
case CameraMode.First:
MouseLookFirstPerson();
break;
case CameraMode.Third:
MouseLookThirdPerson();
break;
case CameraMode.Angled:
MouseLookAngled();
break;
}
}
Vector3 newOrientationCamera = Camera.main.transform.localEulerAngles - new Vector3(Camera.main.transform.localRotation.y < 89 && Camera.main.transform.localRotation.y > -89? -deltaY : 0, 0, 0);
< /code>
Это не оказало заметного влияния на поведение камеры. Нужно ли мне внедрить какую -то «сеть», чтобы поймать, когда камера инвертирует и сбросит его позицию? Предпочтительно, «дрожание» тоже не произойдет.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ation-at-h