Comment puis-je obtenir une entrée gamepad en Java? (Windows 10)


Je crée un jeu assez basique pendant mon temps libre, et avant d'y entrer vraiment, je veux apprendre à inclure le support des contrôleurs. J'ai essayé de nombreux tutoriels et différentes bibliothèques, mais ils semblent tous nécessiter JInput (et LWJGL, ils semblent liés d'une manière ou d'une autre?). Ce ne serait pas un problème, et d'une manière générale, j'ai compris comment travailler avec JInput. Cependant, je ne trouve pas une seule version de JInput compatible avec Windows 10. Même si je devais en trouver un, Je n'ai aucun moyen de savoir que le code de test que j'ai écrit fonctionnerait même avec les nouvelles versions de la bibliothèque, donc je n'ai aucun moyen de tester ou même de savoir s'ils fonctionnent avec Windows 10.

Je préférerais utiliser JInput comme cela semble standard, mais si vous connaissez un moyen d'ajouter le support du contrôleur en Java, alors je sauterai sur l'occasion de l'essayer.

Voici mon code et mon erreur - peut-être que je fais juste quelque chose de mal.

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());
            }
        }
    }

Et les erreurs

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)
Author: Turruc, 2018-02-13

1 answers

Je crois que vous manquez le .dll dans votre chemin de bibliothèque natif. le jinput-dx8_64 est un .fichier dll si je ne me trompe pas.

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

^ cela devrait vous aider à obtenir cette configuration, si vous utilisez eclipse. Si vous utilisez un autreE, je ne connais pas vraiment haha.

 0
Author: DrunkWiizard, 2018-09-13 07:07:27