经过一些试验后,我在角色的脖子上安装了一个空的(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