【问题标题】:How do I get gamepad input in Java? (Windows 10)如何在 Java 中获取游戏手柄输入? (视窗 10)
【发布时间】:2018-02-13 02:51:21
【问题描述】:

我在空闲时间创建一个非常基本的游戏,在我真正开始之前,我想学习如何包含控制器支持。我已经尝试了很多教程和不同的库,但它们在某种程度上似乎都需要 JInput(和 LWJGL,它们似乎以某种方式相关?)。这不会是一个问题,一般来说,我已经想出了如何使用 JInput。但是,我找不到与 Windows 10 兼容的单一版本的 JInput。即使我找到了,我也无法知道我编写的测试代码甚至可以与较新版本的库一起使用,所以我无法测试甚至不知道它们是否适用于 Windows 10。

我更喜欢使用 JInput,因为它看起来很标准,但是如果您知道在 Java 中添加控制器支持的任何方法,那么我会抓住机会尝试一下。

这是我的代码和错误 - 也许我只是做错了什么。

import org.lwjgl.LWJGLException;
import org.lwjgl.input.Controller;
import org.lwjgl.input.Controllers;

    public class GamePadTut {

        static Controller cont;

        public static void main(String[] args) {
            try {
                Controllers.create();
            } catch (LWJGLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Controllers.poll();

            for(int i =0; i < Controllers.getControllerCount(); i++) {
                cont = Controllers.getController(i);
                System.out.println(cont.getName());
            }
        }
    }

和错误

WARNING: Found unknown Windows version: Windows 10
Attempting to use default windows plug-in.
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin
java.lang.UnsatisfiedLinkError: no jinput-dx8_64 in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at net.java.games.input.DirectInputEnvironmentPlugin$1.run(DirectInputEnvironmentPlugin.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at net.java.games.input.DirectInputEnvironmentPlugin.loadLibrary(DirectInputEnvironmentPlugin.java:67)
    at net.java.games.input.DirectInputEnvironmentPlugin.<clinit>(DirectInputEnvironmentPlugin.java:109)
    at net.java.games.input.DirectAndRawInputEnvironmentPlugin.<init>(DirectAndRawInputEnvironmentPlugin.java:45)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at net.java.games.input.DefaultControllerEnvironment.getControllers(DefaultControllerEnvironment.java:157)
    at org.lwjgl.input.Controllers.create(Controllers.java:71)
    at GamePadTut.main(GamePadTut.java:11)
java.lang.UnsatisfiedLinkError: no jinput-raw_64 in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at net.java.games.input.RawInputEnvironmentPlugin$1.run(RawInputEnvironmentPlugin.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at net.java.games.input.RawInputEnvironmentPlugin.loadLibrary(RawInputEnvironmentPlugin.java:67)
    at net.java.games.input.RawInputEnvironmentPlugin.<clinit>(RawInputEnvironmentPlugin.java:109)
    at net.java.games.input.DirectAndRawInputEnvironmentPlugin.<init>(DirectAndRawInputEnvironmentPlugin.java:46)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at net.java.games.input.DefaultControllerEnvironment.getControllers(DefaultControllerEnvironment.java:157)
    at org.lwjgl.input.Controllers.create(Controllers.java:71)
    at GamePadTut.main(GamePadTut.java:11)

【问题讨论】:

    标签: java windows controllers jinput


    【解决方案1】:

    我相信您在本机库路径中缺少 .dll。如果我没记错的话,jinput-dx8_64 是一个 .dll 文件。

    http://wiki.lwjgl.org/wiki/Setting_Up_LWJGL_with_Eclipse.html

    ^ 如果您使用的是 eclipse,那应该可以帮助您进行设置。如果您使用的是另一个 IDE,我真的不知道哈哈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2020-11-11
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多