相对于相机旋转滚动球体
Rolling a sphere relative to Camera Rotation
我正在为 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);
}
终于解决了!我用了
GetComponent<Rigidbody> ().AddForce (RightCamera.transform.forward * angleX);
GetComponent<Rigidbody> ().AddForce (-RightCamera.transform.right * angleZ);
现在球体相对于相机滚动。
有一种简单的方法可以做到这一点。给定表示为四元数(或 3x3 矩阵)的方向,将其与单位 Y 轴向量组合。
生成的 vec3 的 X 和 Z 值就是您的力。无需涉及欧拉角,当您接近与垂直方向成 90 度角时,这几乎肯定会开始伤害您。
我正在为 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);
}
终于解决了!我用了
GetComponent<Rigidbody> ().AddForce (RightCamera.transform.forward * angleX);
GetComponent<Rigidbody> ().AddForce (-RightCamera.transform.right * angleZ);
现在球体相对于相机滚动。
有一种简单的方法可以做到这一点。给定表示为四元数(或 3x3 矩阵)的方向,将其与单位 Y 轴向量组合。
生成的 vec3 的 X 和 Z 值就是您的力。无需涉及欧拉角,当您接近与垂直方向成 90 度角时,这几乎肯定会开始伤害您。