问题标签 [gamepad-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 三.js相机旋转顺序
我正在尝试使用游戏手柄在 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 并且没有兴趣使用它。
任何人都可以帮忙吗?
我的轮换代码:
javascript - 如何通过 HTML 页面从游戏手柄获取/发送数据
是否有任何 API 或工具可以通过 HTML 页面写入和读取数据?
java - 安卓游戏手柄后台服务
我和我的朋友正在尝试使用 android 游戏手柄按键来触发电话。即使设备处于睡眠状态,我们也希望它能够正常工作。解决此问题的适当方式是什么?我找到了 android.view.InputDevice 和 KeyEvent 回调。这是否适用于后台且设备处于睡眠状态的任务?
android - 如何切换安卓游戏手柄的轴?
在我的情况下,我在 Xinput 模式下使用 Logitech F310(它有一个开关可以在 DirectInput 和 Xinput 之间进行选择)。我写了一个小应用程序,它读取游戏手柄的轴值。事实证明,右侧模拟摇杆使用轴MotionEvent.AXIS_RX
,MotionEvent.AXIS_RY
而两个肩部模拟触发器使用轴MotionEvent.AXIS_Z
和MotionEvent.AXIS_RZ
。
但根据文档AXIS_Z 和 AXIS_RZ 应该用于正确的模拟摇杆:
公共静态最终 int AXIS_RZ
轴常数:运动事件的 Z 旋转轴。
对于操纵杆,报告关于 Z 轴的绝对旋转角度。该值被标准化为从 -1.0(逆时针)到 1.0(顺时针)的范围。在带有两个模拟操纵杆的游戏手柄上,该轴通常被重新解释为报告第二个操纵杆的绝对 Y 位置。
这是游戏中的一个问题,它不提供重新映射游戏手柄的按钮和模拟摇杆的选项。例如 GTA San Andreas 认为这两个模拟触发器是正确的模拟摇杆。但由于触发器的中性值在未按下时为 -1 而不是 0,就像模拟摇杆处于中性状态一样,相机不断旋转。(此游戏中使用右侧模拟摇杆移动相机)
轴映射保存在哪里?它是在游戏手柄中硬编码的吗?还是在 Linux 设备子系统中分配?或者可能在 android InputDevice 框架内?如果是这样,它可以改变吗?
另一种可能的解决方案是拦截事件调度程序和接收应用程序之间的 MotionEvents 并更改轴值。在android中这或类似的可能吗?甚至可能在较低级别:通过 root 访问,可以从 /dev/input/event6 设备(在我的情况下 event6 是游戏手柄)读取原始输入数据。是否可以用调整后的轴值不断覆盖这个文件?
unity3d - Unity 中的 SharpDX.Direct 输入
我一直在尝试使用 SharpDX.DirectInput dll 将 DirectInput 实现为统一,但是当我创建操纵杆时,它给了我一个错误:
这是我的代码:
}
当我创建操纵杆时发生错误:
javascript - Gamepad API - Gamepad 对象在断开连接后是否仍然存在并在重新连接时重用?
摘要:
我想说明两个或多个“XBox 360 控制器”之间的区别。
背景:
我正在使用 Javascript ( Typescript )为Gamepad API构建 GamepadManager 。GamepadManager 的主要功能是支持在使用特定游戏手柄按钮或轴时调用的回调。(GamepadManager 还使用控制器配置文件列表,专门为特定品牌和型号映射按钮和轴)
问题:
当物理游戏手柄重新连接时,SAME Javascript 游戏手柄对象是否可以重新链接/分配给最初断开的物理游戏手柄?
这可能实际上是自动发生的吗?更好的是,可以手动重新链接吗?
场景:
当物理游戏手柄断开连接时,上述 EventListener 将返回一个事件,其中包含最初用于现在断开连接的物理游戏手柄的游戏手柄对象。事件的游戏手柄对象有一个布尔值来指定物理游戏手柄是否仍然连接......但当然它是断开的,因为它是从断开事件侦听器返回的。对我来说,这意味着游戏手柄对象可以在物理游戏手柄保持断开连接时持续使用,也许在再次重新连接时可以重用。
我在寻找什么:
我希望我的 GamepadManager 足够聪明,可以在断开连接之前将重新连接的物理游戏手柄链接到相同的游戏内可玩角色。
(这样,如果玩家正在使用一个特定的控制器,并且它被断开并重新连接,那么同一个控制器会被记住并且仍然会控制同一个角色)
此外,我希望即使所有 4 个物理游戏手柄都是相同品牌/型号的 Xbox 360 控制器,GamepadManager 也能够区分它们连接到的 USB 端口。
是否有一个特定的 ID/序列号,每个物理游戏手柄必须与其他相同品牌和型号的游戏手柄区分开来?还是 USB 端口是区分 2 个或更多匹配的物理游戏手柄的唯一方法?
或者:
有没有更好的方法来查看如何管理游戏的物理游戏手柄?(横向滚动动作沙盒)
actionscript-3 - GameInput.DEVICE_ADDED 在应用程序启动时未触发
我发布这个问题是因为我在 adobe AIR 桌面应用程序中的 GameInput API 有一点问题。我在一个测试应用程序中测试了 API,它工作得很好。但是,当我将它添加到我的真实应用程序(游戏)中时,它在启动时不再触发。
其他一切正常,如果我断开/重新连接控制器,一切正常。但是,回调函数的初始触发器不再起作用。
知道为什么吗?这就是我所做的:
我猜这可能是焦点问题或相关问题,但我真的不明白为什么会发生这种情况。我的应用程序如下所示: Core(从 swf 调用的类并管理整个应用程序)
屏幕(继承movieclip但内部有逻辑的不同类,如游戏、选项屏幕等)
Gameinput api 初始化在核心中完成,在对象实例化之后(使用 Event.ADDED_TO_STAGE)。
chromium - 无法在 Chromium 版本 44.0.2383.0 上获取游戏手柄事件
我正在尝试用铬制作我的游戏手柄事件。使用以下代码在 Chrome 版本 44.0.2403.130 m 上一切正常:
但是在 Brandon Jones 制作的 WebVR chromium 版本上,我无法得到任何反馈,“navigator.getGamepads()”函数只返回一个包含四个未定义变量的数组。
还不支持吗?还是我需要做一些具体的事情?
谢谢您的帮助!
javascript - Microsoft Edge 未检测到游戏手柄
我一直在尝试使用他们自己的游戏手柄示例http://internetexplorer.github.io/Gamepad-Sample/在 Microsoft edge build 10240 中测试游戏手柄 API 。此演示适用于 chrome 和 firefox。
存在但在navigator.getGamepads
使用边缘时返回一个空数组。我尝试过使用两种不同的控制器,其中一种是 PS4 控制器。edge 只支持一些游戏手柄还是我需要更新版本的 edge?
编辑:因此,如果将游戏手柄模拟为 Xbox 控制器,它们就会被识别。其他支持游戏手柄 api 的浏览器没有区分不同的控制器供应商。边缘的游戏手柄 api 是否有任何意图支持除 Microsoft 控制器之外的任何东西?
html - Gamepad API - 不同的浏览器轴映射
我正在使用 Gamepad API,并且在同一台计算机上使用 chrome 和 firefox,我得到了不同的轴映射、轴编号和按钮映射。有没有办法让它们使用相同的映射?还是某个图书馆?
谢谢