0

我正在为 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);

}
4

2 回答 2

0

有一个简单的方法可以做到这一点。给定表示为四元数(或 3x3 矩阵)的方向,将其与单位 Y 轴向量组合。

生成的 vec3 的 X 和 Z 值就是你的力量。无需涉及欧拉角,当您从垂直方向接近 90 度角时,几乎肯定会开始伤害您。

于 2015-03-31T17:51:20.347 回答
0

终于解决了!我用了

    GetComponent<Rigidbody> ().AddForce (RightCamera.transform.forward * angleX);
    GetComponent<Rigidbody> ().AddForce (-RightCamera.transform.right * angleZ);

现在球体相对于相机滚动。

于 2015-03-31T14:54:13.893 回答