当手拉近/远离HoloLens相机时,将游戏对象移近/远离HoloLens相机

问题描述 投票:2回答:3

我目前遇到的问题是,当我的手向前/向后时,我想要将游戏对象移近/远离我(HoloLens相机)。好吧,我已经正确地实现了逻辑来移动物体更近/更远但是通过确定手的移动无法工作。我正在使用HoloToolkit的IManipulationHandler接口移动对象,这是我现在使用的主要逻辑:

void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
{
    transform.position = Vector3.MoveTowards(objectPosition, cameraPosition,
        - (eventData.CumulativeDelta * ManipulationSpeed).z);
}

(当我不改变我的位置时它才能正常工作)

这是我使用的另一个逻辑:

void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
{
    transform.position = Vector3.MoveTowards(objectPosition, cameraPosition,
        Vector3.Distance(cameraPosition, eventData.CumulativeDelta));
}

根据上述逻辑,每当我移动我的手(向前或向后)时,物体总是靠近,因为两个矢量的距离b / w总是首先增加。

请帮我解决这个问题。谢谢。

注意:当我的手向左/向右拖动时,我想旋转对象,当我的手向前/向后拖动时,我想移动物体更近/更远。

c# unity3d hololens
3个回答
1
投票

您可以从MixedRealityToolkit查看HandDraggable脚本。


0
投票

看起来你还在使用HoloToolkit(现在在htk_development早午餐上),你实际上可以使用TwoHandManipulatable来实现这一点。否则,您可能必须编写自己的求解器。我不建议人们从头开始实施,这很痛苦。

使用TwoHandManipulatable.cs,您可以将物体移向任何方向。如果要限制方向(例如仅限于凸轮),可以在自己的类中覆盖它。

在我的应用程序中,我通过修改SimpleTagAlong脚本使用语音命令作为手势的第二选择。然后将此操作与语音关键字“更近/更远”相关联。根据我对最终用户的体验,他们会感谢您拥有语音命令。


0
投票

谢谢...但是当我使用INavigationHandler接口而不是IManipulationHandler时,我的问题得到了解决。我的工作就像一个魅力。再次感谢。

© www.soinside.com 2019 - 2024. All rights reserved.