簡體   English   中英

如何獲取Java中的游戲手柄輸入? (Windows 10)

[英]How do I get gamepad input in Java? (Windows 10)

我會在業余時間創建一款非常基本的游戲,在真正接觸它之前,我想學習如何包含控制器支持。 我已經嘗試了很多教程和不同的庫,但是它們似乎都在某種程度上需要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)

我相信您在本機庫路徑中缺少.dll。 如果我沒有記錯的話,jinput-dx8_64是一個.dll文件。

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

^如果您使用的是eclipse,應該可以幫助您進行設置。 如果您使用的是其他IDE,我真的不知道哈哈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM