我在Unity项目中有一个3D模型,并且有一个JavaScript可根据键盘箭头键(向左/向右)旋转相机。

现在,我需要一个脚本来检测水平滑动手势并返回用于旋转相机的向量。

我将ZigFu SDK与PrimeSense OpenNI / NITE一起使用。 ZigFu SDK随附示例脚本,其中之一是SwipeDetector-我想知道它如何工作?

我的设置:
我有3个GameObjects:一个3D模型,一个MainCamera和一个Directional Light。

那么,如何在项目中使用SwipeDetector脚本?我现在的操作方式是1)创建一个空的游戏对象“ SwipeDetection”,2)从ZigFu中拖放SwipeDetector脚本。我已经在SwipeDetector脚本中输入了日志,但是没有看到它们。

最佳答案

Zigfu绑定(我假设您使用的是1.4版?)没有SwipeDetector示例,但它们确实包含SwipeDetector MonoBehaviour。 SwipeDetector可以检测垂直和水平滑动,但不幸的是不能检测滑动速度。

您有几种选择:


使用提供的Swipe Detector,并在每次检测到水平滑动时将相机旋转固定量(SwipeDetector_Left或SwipeDetector_Right事件)
使用提供的Swipe Detector,在Swipe上开始旋转,并在SwipeDetector_Release事件上停止旋转。这类似于按箭头键(假设您在键击/键击事件中具有相同的行为)
跟踪手的速度,并在滑动时检查其速度。使用此值旋转相机。您可以通过创建新的MonoBehaviour并实现Hand_Create,Hand_Update和Hand_Destroy(查看HandpointControls文件夹中的任何脚本)来跟踪速度。将最后n帧中的手指指向一个队列。最新和最旧点之间的差异将是您在这n帧中的速度(我建议您从15帧开始,或者大约半秒钟)


(它将包含在将来的Zigfu版本中:)

您的游戏对象设置听起来不错-如果您看不到任何日志,则可能不是在正确执行“聚焦手势”。尝试向传感器挥手或轻击-这将导致Hand_Create事件被调用。一旦有了有效的指针,就应该从滑动检测器中获取正确的事件。

同样值得一提的是,您的滑动检测游戏对象应该具有HandPointControl组件(与RequireComponent一起隐式添加),并且'ActiveOnStart'应该为true。

09-15 22:25