-1

一般来说,我对 jinput 和 java 有点陌生,想知道用 jinput 设置多个 xbox 360 控制器(尤其是 4 个)的最简单方法是什么?目前,我正在退出 theuzo007 的关于使用控制器的 jinput 的教程,并且正在进行基本的工作控制器设置。如果我可以设置什么控制器移动某些实体,那就太棒了。(我正在使用我朋友的自制图书馆,你知道的。)

截屏 -

http://imgur.com/a/1Ocu5

  • 顶部是主要代码块,最后一个是标题(抱歉,它们的顺序错误,imgur 有时会这样做!)

如果有人可以帮助我,那就太好了,谢谢!

编辑:如果没有办法做到这一点,如果有人可以尝试向我推荐一个新图书馆,那就太酷了。

4

1 回答 1

1

有一种可能的方法
该教程非常好。此外,我认为您可以通过在 zip 中复制粘贴一些代码来完成 4 个控制器的工作,theuzo007 为您提供了更多功能。顺便说一句,您喜欢的那个页面说该教程有更好的版本,您可以在其中下载他的代码的更好版本 -> theuzo007 的 JInput 教程 V2

下载代码后,您可以在 JoystickTest.java 中看到一个名为 searchForControllers() 的方法,您可以将(使用相应private ArrayList<Controller> foundControllers;的 as 字段)放入一个名为ControllerChecker或更酷名称的类中。将它们全部设为静态,您将得到如下内容:

public class ControllerChecker {

private static ArrayList<Controller> foundControllers = null;

/**
*   Just used for checking all available controllers.
*/
private static void searchForControllers() {
    Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();

    for(int i = 0; i < controllers.length; i++){
        Controller controller = controllers[i];

        if (
                controller.getType() == Controller.Type.STICK || 
                controller.getType() == Controller.Type.GAMEPAD || 
                controller.getType() == Controller.Type.WHEEL ||
                controller.getType() == Controller.Type.FINGERSTICK
           )
        {
            // Add new controller to the list of all controllers.
            foundControllers.add(controller);

            // Add new controller to the list on the window.
            window.addControllerName(controller.getName() + " - " + controller.getType().toString() + " type");
        }
    }
}

/**
*   Returns null if there is no controller available. Otherwise, it retrieves the last controller in the list by removing it.
*/
public static Controller getController() {

    if(foundControllers == null) {
        foundControllers = new ArrayList<Controller>();
        searchForControllers();
    }

    return foundControllers.size() == 0 ? null : foundControllers.remove(foundControllers.size() - 1);
}

}

您将使用静态方法getController()让玩家拥有不同的控制器,检查返回的控制器是否为空,这意味着没有可用的控制器。您也可以更改我的代码并在每次请求控制器时检查控制器,但您必须检查控制器是否已在使用中。

我希望这对你的目的有所帮助。这个解决方案只是检查所有可用的控制器,然后按找到它们的最后一个顺序返回(也许使用堆栈更有效)。但可能您会想要更多功能,例如能够通过按下按钮告诉程序选择特定控制器,也许在屏幕上显示“请连接您的控制器并按任意键/按钮”。如果您了解 theuzo007 的代码(JoystickTest.java 有很多有用的行!),这很容易实现。

您还可以制作一些机制来检测未插入的控制器,只需再次插入它们,系统就会识别它。也许有一些控制器ID,我还没有找到它。

最后,这里还有更多代码。

于 2014-03-06T08:14:17.663 回答