3

我的 Unity 项目中有一个 3D 模型,我有一个基于键盘箭头键(左/右)旋转相机的 JavaScript。

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

我正在使用带有 PrimeSense OpenNI/NITE 的 ZigFu SDK。ZigFu SDK 附带示例脚本,其中之一是 SwipeDetector - 我想知道它是如何工作的?

我的设置: 我有 3 个GameObjects:一个 3D 模型、一个 MainCamera 和一个定向灯。

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

4

1 回答 1

4

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

你有几个选择:

  1. 使用提供的 Swipe Detector,并在每次检测到水平滑动时将相机旋转固定量(SwipeDetector_Left 或 SwipeDetector_Right 事件)

  2. 使用提供的 Swipe Detector,在 Swipe 上开始旋转,在 SwipeDetector_Release 事件上停止旋转。这类似于按箭头键(假设您在 keydown/keyup 事件上具有相同的行为)

  3. 跟踪手的速度,并在滑动发生时检查其值。使用此值旋转相机。您可以通过创建新的 MonoBehaviour 并实现 Hand_Create、Hand_Update 和 Hand_Destroy 来跟踪速度(查看 HandpointControls 文件夹中的任何脚本)。用最后 n 帧的手点保持一个队列。最新点和最旧点之间的增量将是您在这 n 帧中的速度(我建议您从 15 帧开始,或大约半秒)

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

您的游戏对象设置听起来正确 - 如果您没有看到任何日志,您可能没有正确执行“聚焦手势”。尝试挥手或轻敲传感器 - 这应该会导致 Hand_Create 事件被调用。一旦你有一个有效的handpoint,你应该从 Swipe Detector 获得正确的事件。

还值得一提的是,您的滑动检测游戏对象应该有一个 HandPointControl 组件(使用 RequireComponent 隐式添加)并且“ActiveOnStart”应该为真。

于 2012-02-08T06:31:28.803 回答