使用附加的ManipulationHandler-script限制对象的移动

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

我想在场景中的大球体上移动ManipulationHandler-script来移动小球体。

[小球的运动需要限制在大球的“外壳”上。

我完成了behaviour(链接提供了一个gif),而没有使用操作处理程序,而是在Update函数中更新了小球体的X和Y。

是否有一种无需重写即可通过ManipulationHandler实现相同行为的方法?

c# unity3d hololens mrtk
2个回答
0
投票

我建议在操作完成计算其位置后限制其位置。因此,在LateUpdate中,您可以编写约束逻辑并在位置超出范围时更新位置。如果是,请使用Collider.ClosestPoint重设位置。

基本上尝试夹紧它,并确保操作顺序正确。


0
投票

根据您的描述,MRTK中的Solver无需编写任何代码即可实现此想法。如果您不仅仅由于其他原因而仅使用ManipulationHandler,我强烈建议您使用RadialView。您可以参考以下步骤以使用规划求解实现此功能:

  1. SolverHandlerRadialView组件添加到小球体中。
  2. RadialView组件中,在Tacked Target Type字段中选择Custom Overrideset属性。
  3. Transfom Override字段设置为大球体。
  4. 径向视图组件中,将MaxViewDegrees设置为360,将最小距离最大距离设置为大球体的半径,
  5. 禁用平滑

现在,小球体可以绕大球体旋转并与它保持固定的距离。

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