如何使用跳跃运动统一抓取和移动游戏对象

时间:2017-03-16 15:04:18

标签: c# unity3d leap-motion

我正在制作一个团结和跨越动作的项目,但我是一个新的飞跃。我试图移动gameObjects但是当我将rigidBody的属性添加到它并用手模型触摸它时它会飞走,我该如何避免这种情况?

2 个答案:

答案 0 :(得分:2)

因为Leap在其核心资产中提供的默认物理手段被解释为" kinematic,"他们基本上有无限质量。当你试图抓住或触摸它们时,物体会飞走,因为潜在的物理解算器试图弄清楚当你在另外两个无限质量的刚体之间碾碎一个完全刚性的物体(因此" Rigidbody")时会发生什么。 ..解算器以巨大的速度结束,因此你会看到奇怪而且感觉不好的行为。

有一些花哨的数学(Kabsch解决)和实时物理(软,非刚性接触行为)涉及使触摸和抓取物体感觉良好,所以你可能只是想要下载Leap的交互引擎,它可以为您完成所有这些工作!

确保您拥有最新的"核心资产"来自main developer resource page,您可以找到"交互引擎"在同一页上。

下载这些软件包并将它们导入Unity,然后您的工作流程基本上可以正常工作:

  • 在InteractionEngine文件夹中找到InteractionManager预制件,并将其拖动到场景中。这个对象只是为交互系统做了必要的簿记。
  • 从手控制器中删除您正在使用的RigidRoundHands ,并在InteractionEngine文件夹中添加Interaction Brush Hands。这些牌具有额外的物理逻辑,可防止交互像您描述的那样具有爆炸性。
  • 将InteractionBehaviour组件添加到您希望能够触摸或拾取的任何对象。

从那里,你应该好好去。如果某些内容在任何步骤停止工作,您可以在开发者页面上查看Interaction Engine 101示例;它是一个开源Unity项目,具有最新交互引擎的工作实现。

答案 1 :(得分:0)

我认为你应该使用Coroutine移动它。你可以在这里找到更多信息:https://docs.unity3d.com/Manual/Coroutines.html这应该没有太多代码。