2017-10-29 113 views
6

我正在使用Wiimote控制器作为输入设备。 我使用this wrapper进行HID呼叫/轮询。Unity 3D异步轮询Unity中的外部硬件

在这个包装器附带的演示场景中,轮询控制器在Update事件中完成。

在很多Wii游戏中,极其快速地向上和向下快速触发动作。 该包装表示极端竖直对准的位置(其中,目标超出范围/是“屏幕外”)作为

Y=-1 

我试图通过

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 

的检测这样的快速上下移动问题是(我认为由于仅在更新事件中进行轮询的性质),#2)不一定必须发生。目标可能在屏幕上,但控制器在此时未被轮询。

我想问问什么可能是这个问题的有效解决方案。

+0

第2步是否需要?如果您只是首先检测目标是否在屏幕的上边缘之上,然后再次检查目标是否在特定时间段内低于屏幕的底部边缘,该怎么办?如果您需要更多定义的运动区域,则可以将左右边界限制为屏幕宽度。 – ryeMoss

+0

你问这是因为这是你遇到的实际问题吗?你的更新事件有多慢? – Mars

回答

2

您的投票将不得不是非常糟糕的,因为这是一个问题,但除了提高投票率之外,在这里没有什么可以做的。

唯一的其他选择是使用陀螺仪或加速度计代替(对不起,没有打扰检查你的包装是否暴露了这些)。基本上,您可以将严酷的垂直摇摆与屏幕外的点组合在一起,但如果您的轮询在原始解决方案中存在问题,那么它也可能是一个问题。