我正在尝试使用游戏手柄在 Three.js 中旋转相机,使用第一人称射击风格的控件。
浏览器检测到游戏手柄并识别它的输入,但相机的旋转顺序错误。当我在相机的局部 Y 轴上旋转时,它也会考虑局部 X 旋转,这是不需要的。
- 我想要什么:http: //jsfiddle.net/fYtwf/3/
- 发生了什么:http: //jsfiddle.net/fYtwf/2/
看来我和这个人有同样的问题,但他的问题是使用 Three.js r54 解决的,而我使用的是 r60。他camera.eulerOrder = "YXZ";
开始让它工作,但目前的等价物camera.rotation.order = "YXZ";
似乎对我不起作用。
我知道 Three.js 的内置“FirstPersonControls”类,但它不适合我,因为它不接受控制器输入,并且稍后在其中塞入其他非移动控件会很麻烦。我也知道 gamepad.js 并且没有兴趣使用它。
任何人都可以帮忙吗?
我的轮换代码:
function pollGamepad()
{
gamepad = navigator.webkitGetGamepads()[0];
//Rotation
if(gamepad.axes[3] > 0.20)
{
camera.rotateX(-gamepad.axes[3] * 0.02);
}
if(gamepad.axes[3] < -0.20)
{
camera.rotateX(-gamepad.axes[3] * 0.02);
}
if(gamepad.axes[2] < -0.20)
{
camera.rotateY(-gamepad.axes[2] * 0.02);
}
if(gamepad.axes[2] > 0.20)
{
camera.rotateY(-gamepad.axes[2] * 0.02);
}
}