AngularVelocity относительно CameraRig (VR) - PullRequest
0 голосов
/ 05 мая 2019

Я немного соленая. Я работаю над тем, чтобы заставить объекты, которые я отпускаю из рук в VR, использовать правильную скорость и угловую скорость контроллера, чтобы их движение было естественным. Это простой вопрос отслеживания угловой скорости и скорости контроллера и передачи его объекту при отпускании:

 rigid.velocity = controller.currentVelocity;
 rigid.angularVelocity = controller.currentAngularVelocity;

Однако, и здесь идет кикер, у меня также есть система локомоции, которая поворачивает CameraRig относительно головы игрока, и после этого все эти значения неверны и смещены относительно cameraRig следующим образом:

 cameraRig.transform.RotateAround(headsetCamera.transform.position, Vector3.up, -(headsetCamera.transform.eulerAngles.y - lastHeadRot.y));
 lastHeadRot = headsetCamera.transform.eulerAngles;

Я пытался найти некоторые ответы, подобные этому ( ref ) и этому ( ref ), но ни один из них не сработал. Любые предложения будут приветствоваться. При использовании других форм передвижения угловая скорость и скорость правильно устанавливаются для брошенных объектов, но не один раз я использовал rotateAround на cameraRig.

1 Ответ

0 голосов
/ 14 мая 2019

Я наконец решил это, поэтому решил добавить сюда решение.

Вместо того, чтобы использовать этот код для бросания объектов:

 _rigid.velocity = controller.currentVelocity;
 _rigid.angularVelocity = controller.currentAngularVelocity;

Я использовал:

 _rigid.AddForce(controller.currentVelocity);
 _rigid.angularVelocity = controller.currentAngularVelocity;

это решило проблему, и теперь объекты летят в ожидаемом направлении, независимо от того, как вращается родитель.

...