我目前遇到一个问题,当我的手向前/向后移动时,我想将游戏对象移近或移近我(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首先总是增加。
请帮助我解决此问题。谢谢。
注意:当我的手向左/向右拖动时,我想旋转对象,而当我的手向前/向后拖动时,我想使对象更近/更远。
答案 0 :(得分:1)
您可以从MixedRealityToolkit中签出HandDraggable脚本。
答案 1 :(得分:0)
好像您仍在使用HoloToolkit(现在在htk_development早午餐上),您实际上可以使用TwoHandManipulatable来实现。否则,您可能必须编写自己的求解器。我不建议人们从头开始实施它,这很痛苦。
使用TwoHandManipulatable.cs
,可以将对象移向任何方向。如果您想限制方向(例如,仅朝凸轮方向),则可以在自己的班级中覆盖该方向。
在我的应用程序中,通过修改SimpleTagAlong脚本,我将语音命令用作手势的第二选择。然后将此动作与语音关键字“更近/更远”相关联。根据我与最终用户的经验,他们将感谢您使用语音命令。
答案 2 :(得分:0)
谢谢...但是当我使用INavigationHandler接口而不是IManipulationHandler时,我的问题就解决了。我像魅力一样工作。再次感谢。