我正在建立一个汽车仿真器游戏使用团结。对于输入,我使用Logitheck方向盘G29。现在我需要使用手动控制器加速或中断。这是我的手控制器手控制器HC1 链接
现在我能把他的意见说出来吗?这个设备被我的windows 10系统所识别,但是如果我试图用这个设备启动游戏,我就不能加速或损坏汽车。
我在统一的InputController中配置了以下内容:

在我的IRDSPlayerControls.cs文件中,我编写了以下代码:
if (Input.anyKey)
{
foreach (KeyCode kcode in Enum.GetValues(typeof(KeyCode)))
{
Debug.Log("Joystick pressed " + kcode);
}
}
Debug.Log("Input debug acc: " + Input.GetAxis("Vertical3"));
Debug.Log("Input debug frenata: " + Input.GetAxis("Vertical4"));在“统一控制台”中,我可以显示如下:
Input debug acc: -1
Input debug frenata: -1发布于 2022-11-22 06:25:35
您可以检测到特定操纵杆joystick 1 button 0, joystick 1 button 1, joystick 2 button 0…上的特定按钮。
或任何操纵杆joystick button 0, joystick button 1, joystick button 2…上的特定按钮
查看输入管理器
我可以在这里一步一步地解释这一点,但它不会像一些在线教程那样好。我推荐这段视频作为一个很好的教程来做到这一点。
更新:
我认为你的手控制器给出了模拟值,加速/刹车按钮实际上不是按钮,但它们是模拟joy棒,并有一个范围的数值。
要检查此,请使用Input.GetJoystickNames:
using UnityEngine;
public class Example : MonoBehaviour
{
// Prints a joystick name if movement is detected.
void Update()
{
// requires you to set up axes "Joy0X" - "Joy3X" and "Joy0Y" - "Joy3Y" in the Input Manager
for (int i = 0; i < 4; i++)
{
if (Mathf.Abs(Input.GetAxis("Joy" + i + "X")) > 0.2 ||
Mathf.Abs(Input.GetAxis("Joy" + i + "Y")) > 0.2)
{
Debug.Log(Input.GetJoystickNames()[i] + " is moved");
}
}
}
}发布于 2022-11-24 07:20:10
我建议首先检查是否收到了这些投入,包括:
if (Input.anyKey)
{
foreach(KeyCode kcode in Enum.GetValues(typeof(KeyCode)))
{
Debug.Log(kcode);
}
}通过这种方式,您可以知道游戏是否识别了您的控制器的关键代码,如果它识别了,哪些名称被分配给他们。一旦你得到这个,你只需要检查键码作为一个通常的键盘!
发布于 2022-11-24 14:21:49
并不是每一个操纵杆,转向等是映射它的输入到同一轴。
关于这个话题有一个统一的论坛(以及其他相关的问题)。我发现有一些统一插件,可能会解决你的问题:
有些程序可以用来列出所有输入轴,并查看当前正在影响的输入轴。我用过其中一个,但不记得它的名字。它可能会帮助你看到你的节流阀和节流阀被映射到哪个轴。其中一些还允许你重新映射,如果这是你想要的。
https://stackoverflow.com/questions/74488142
复制相似问题