当角色的头部已经转动60°时,如何连续旋转角色的身体?
2022-09-03 08:04:00
经过一些实验,我把一个空的(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