经过一些尝试,我将一个空的(HeadCam)绑定到角色的脖子上。 这段代码允许头部与CardboardHead /相机同步旋转。
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