我正在研究Oculus Rift的新控制方案,该方案利用耳机的倾斜来移动播放器。意思是,你来回前后倾斜前进和后退,并从一侧到另一侧进行扫射。相机被绑在一个滚动的球体上,因为它给人一种很好的加速感,感觉有点像飞来飞去。到目前为止,它运作良好,但仅限于全局轴。因此,如果向左转并向前倾斜头部,您仍然可以根据起始位置前进(如果您面向左侧意味着您将向右移动)。我正在尝试修复它,这样你就可以相对于相机朝向的方向向前走,但没有运气。我有一种强烈的感觉,这是一种非常简单的东西,但我似乎无法找到它。非常感谢任何帮助!
以下是我现在在滚动球体上的内容:
public GameObject RightCamera;
void FixedUpdate(){
float angleX = RightCamera.transform.eulerAngles.x;
angleX = (angleX > 180) ? angleX - 360 : angleX;
float angleZ = RightCamera.transform.eulerAngles.z;
angleZ = (angleZ > 180) ? angleZ - 360 : angleZ;
Vector3 movement = new Vector3 (-angleZ, 0, angleX);
GetComponent<Rigidbody>().AddForce (movement);
}
答案 0 :(得分:0)
终于解决了!我用了
GetComponent<Rigidbody> ().AddForce (RightCamera.transform.forward * angleX);
GetComponent<Rigidbody> ().AddForce (-RightCamera.transform.right * angleZ);
现在球体相对于相机滚动。
答案 1 :(得分:0)
这是一种简单的方法。给定以四元数(或3×3矩阵)表示的方向,将其与单位Y轴向量组合。
得到的vec3的X和Z值是你的力量。无需涉及欧拉角,当你接近垂直方向成90度角时,这几乎肯定会开始伤害你。