Вращение камеры с интерполяцией - PullRequest
1 голос
/ 19 июня 2020

У меня есть объект, который вращается по оси y с входом «Mouse X», и видеокамера, которая через кватернион slerp должна следить за вращением объекта. К сожалению, когда я вращаю объект быстрыми движениями мыши, вращение камеры slerp прекращается, как если бы она ударялась о стену и не следовала за вращением объекта. Без кватернионного slerp он работает вслед за объектом, но мне нужно сделать это с интерполяцией.

объект вращения (в LateUpdate:

float rot = Input.GetAxisRaw("Mouse X") * speedrotation;
transform.Rotate(0, rot, 0);

камера вращения (в LateUpdate):

var rot = Quaternion.Slerp(camera.transform.rotation, object.rotation, speed_rot * Time.deltaTime);
camera.transform.position = object.transform.position + rot;
camera.transform.LookAt(object.transform.position);

1 Ответ

0 голосов
/ 21 июня 2020

Попробуйте вместо этого EulerAngles! Это лучший вариант для изготовления контроллера камеры!

Simple Code:
Vector3 currentCameraEulers;
float rotationDPI = 7f; // I didn't remeber how to call better this thing

void Update(){
float cameraX = Input.GetAxisRaw("Mouse X") * rotationDPI;
if(cameraX != 0f){
currentCameraEulers = new Vector3(0, cameraX, 0);
transform.eulerAngles += currentCameraEulers;
}
}

Это должно работать нормально.

...