После некоторых экспериментов я родил пустую (HeadCam) на шейке персонажа. Этот фрагмент позволяет вращать головку синхронно с CardboardHead/Camera.
void LateUpdate() {
neckBone.transform.rotation = Camera.transform.rotation * Quaternion.Euler( 0,0,-90);
Camera.transform.position = HeadCam.transform.position;
}
Символьные руки не должны двигаться, когда только голова вращается так долго в диапазоне от -60 ° до 60 °, после чего я хотел бы переместить весь персонаж, пока все еще видны руки. Следующий метод работает так долго, что символ не вращается более чем на 180 °, после чего символы переворачиваются на 180 °, как я могу добиться постоянного вращения?
void LateUpdate() {
Quaternion camRot = Camera.transform.rotation * Quaternion.Euler( 0,0,-90);
neckBone.transform.rotation = camRot;
float yrot = camRot.eulerAngles.y;
float ydelta = 0;
if ( yrot < 300f && yrot > 180 ) {
ydelta = yrot - 300f;
}
if ( yrot > 60f && yrot < 180 ) {
ydelta = yrot - 60;
}
playerObj.transform.rotation = Quaternion.Euler(0, ydelta, 0);
Camera.transform.position = HeadCam.transform.position;
}
Java-апплет для тестирования автономного алгоритма: https://github.com/3dbug/blender/blob/master/HeadCamRot.java