Unity 3D异步轮询Unity中的外部硬件

tmi*_*hty 6 c# unity-game-engine

我正在使用Wiimote控制器作为输入设备.我正在使用这个包装器进行HID调用/轮询.

在此包装器附带的演示场景中,轮询控制器是在Update事件中完成的.

在许多Wii游戏中,快速上下瞄准会触发一个动作.包装器指示极端垂直瞄准位置(目标超出范围/"屏幕外")

Y=-1
Run Code Online (Sandbox Code Playgroud)

我试图通过发现这种快速上下运动

1) Detecting if aim is off-screen
2) If yes, have a look if the aim is within the screen again
3) Detect if aim is off-screen again and if all this happened in a certain time period
Run Code Online (Sandbox Code Playgroud)

然而问题是(我认为由于仅在Update事件中进行轮询的性质),#2)不一定必须发生.目标可能在屏幕上,但控制器没有被轮询.

我想问一下这个问题的有效解决方案.

Mar*_*ars 2

您的民意调查必须非常糟糕,这才会成为一个问题,但除了提高民意调查率之外,您实际上无能为力。

唯一的其他选择是使用陀螺仪或加速度计(抱歉,没有费心检查您的包装器是否暴露了这些)。您基本上可以将剧烈的垂直震动与屏幕外的点结合起来,但如果您的轮询是原始解决方案中的问题,那么这里也可能是一个问题。