我正在使用标准的Unity Input Manager,而不是新的输入系统。
我正在将操纵杆控制器连接到我的应用程序,但它不是标准的Xbox / PSx类型的控制器-它是模型飞机上使用的(塔拉尼斯)无线电控制发射器。这些是非常“软”的,也就是说,根据发射器类型的不同,它们支持多个通道,您可以将任何物理开关/电位器/操纵杆映射到发射器内的任何通道。通常,将前四个通道映射到操纵杆上以进行油门,偏航,俯仰和横滚,并根据需要映射其他内容。我有两个额外的开关以两种方式映射到通道5和6,所以它们输出的通道值仅在最大正值和最大负值之间变化(控制杆显然会根据位置给出不同的值)。
发射器具有USB输出,可以像PC游戏控制器一样工作,并且可以-六个通道都到达Unity。
但是,还有另一种(无线)方式:发送器发送到RC接收器/飞行控制器模型,该控制器具有USB端口,就像发送器一样,它可以连接到PC-不需要传输器到PC USB电缆,仅此而已。接收器连接到运行名为Betaflight的软件的飞行控制器,并且该软件支持PC USB链接。所有这些都与直接USB链接一样有效-除了额外的通道之外。
在Unity中,我试图找出多余的渠道。在Betaflight中,有可能只处理基本的四个,还不知道,我正在尝试从Unity端进行调查。
在Unity中,我已将所有28个物理操纵杆轴(在输入管理器中似乎都可用)映射到28个虚拟轴,称为JoyAxis1到JoyAxis28。我用Input.getAxisRaw("<virtual_axis_name>");
读取的内容在基本的四个通道上工作正常,在使用USB链接时,其他两个通道工作正常,但在通过Betaflight进行操作时,其他两个通道工作正常。
我确实注意到列表中的下两个虚拟轴(从逻辑上讲,我希望我的两个额外轴都出现)均停留在值“ 1”,而工作轴均按预期报告-1至+1 ,并且完全未使用的轴报告为0。让我觉得这些轴上正在发生某些事情,但不是正确的事情。
经过一长段描述,我的问题是这样的:是否是从Unity可以读取的角度来看,可分配轴1至28?这些频道可能会以我尚未阅读的其他形式出现吗?辅助问题是,我能否获得来自输入硬件的真实原始值(硬件肯定不会产生从-1到+1的浮点数,更可能是从0到1023或-128到+127的整数,或者相似,所以正在进行输入处理,我宁愿自己做后面做。