在用MRTK2.5在Hololens2上进行操作的过程中获取手的速度或偏差

问题描述

我要做什么: 我在Unity中使用MRTK2.5.1 / Hololens2和OnlineMaps资产。我想用我的手(通过触摸地图或远处的指针)滚动地图。即点击/握住地图,然后在x / z平面周围拖动手。

我之前所做的事情: 使用holotoolkit / hololens1,可以使用侦听器轻松处理操作事件。 自操作开始以来,OnManipulationChanged事件为我提供了一个CumulativeDelta值,该值表示手的位置如何发生变化。

我在MRTK2.5中尝试过的操作: 我从ManipulationHandler开始,它为我提供了eventdata中的指针。指针->控制器具有速度值,但始终为0,0。我看不到其他与触发操作的事物(手)的速度或增量位置有关的明显迹象。

PointerHandler脚本具有一个OnPointerDragged事件,但又没有看起来像手的速度或增量位置的属性。

我需要使用手势吗?

不查找代码,只是简要地解释了在点击或单击地图后获得手的速度或手的偏向的正确方法。

解决方法

实际上,不推荐使用ManipulationHandler组件,而ObjectManipulator组件可以代替操纵行为。因此,建议您从“对象操纵器”组件开始,使地图可移动。

对于您关于如何在x / z平面上滚动地图的问题,Constraint旨在以某种方式限制操纵。在ObjectManipulator组件上启用约束后,将通过注册到所选约束管理器的约束来处理变换更改。根据您的情况,MoveAxisConstraint可以满足您的需求,您可以从Constraint Manager组件中将MoveAxisConstraint添加到游戏对象,并将Move Axis Constraint组件的Constraint On Movement属性设置为Y Axis。有关MoveAxisConstraint的更多信息,请参考:https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_ConstraintManager.html#moveaxisconstraint

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...