当手向HoloLens相机靠近/更远时,将游戏对象移近/更靠近HoloLens相机

时间:2019-02-07 07:20:18

标签: c# unity3d hololens

我目前遇到一个问题,当我的手向前/向后移动时,我想将游戏对象移近或移近我(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首先总是增加。

请帮助我解决此问题。谢谢。

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

3 个答案:

答案 0 :(得分:1)

您可以从MixedRealityToolkit中签出HandDraggable脚本。

答案 1 :(得分:0)

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

使用TwoHandManipulatable.cs,可以将对象移向任何方向。如果您想限制方向(例如,仅朝凸轮方向),则可以在自己的班级中覆盖该方向。

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

答案 2 :(得分:0)

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