沿 Vector3 轴设置旋转?

Set rotation along Vector3 axis?

我正在构建一个具有任意“向下”感觉的控制器,这样我就无法使用正常的相机移动方法。

我可以在上/右轴上很好地移动相机,但这会产生不需要的“滚动”。我环顾四周/尝试了很多,但找不到一个好的方法来在任意“前向”轴上设置此相机旋转,而不会搞砸其他运动。

有什么想法吗?

使用 to rotate the camera around the arbitrary up axis (you can use Quaternion.AngleAxis找到这个)和它的局部x轴根据相关输入(这里以鼠标为例):

Vector3 myUp = Vector3.up; // set with arbitrary up
float rotationSpeed = 1f;

// ...

float horizMouseMove = Input.GetAxis("Mouse X") * rotationSpeed;
float vertMouseMove = Input.GetAxis("Mouse Y") * rotationSpeed
transform.rotation = Quaternion.AngleAxis(horizMouseMove, myUp) 
        * transform.rotation 
        * Quaternion.EulerAngles(-vertMouseMove, 0f, 0f);