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



我正在制作一个具有统一和跳跃运动的项目,但我是跳跃的新手。我正在尝试移动游戏对象,但是当我向它添加刚体的属性并用它飞走的手模型触摸它时,我该如何避免这种情况?

因为 Leap 在其核心资产中提供的默认物理指针被解释为"运动学",所以它们基本上具有无限的质量。当您尝试抓住或触摸物体时,物体会飞走,因为底层物理求解器试图弄清楚当您将一个完全刚体(因此称为"刚体")压在另外两个质量无限的刚体之间时会发生什么......求解器以巨大的速度结束,结果你会得到看起来很奇怪和感觉很糟糕的行为。

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

确保您拥有开发人员主资源页面中的最新"核心资产",并且可以在同一页面上找到"交互引擎"。

下载这些包并将它们导入 Unity 中,然后您的工作流程将基本上这样工作:

  • 在 InteractionEngine 文件夹中找到 InteractionManager 预制件,并将其拖到场景中。此对象只是为交互系统做必要的簿记。
  • 从手部控制器中删除您正在使用的那些刚性圆手,并在交互引擎文件夹中添加交互画笔手。这些手有额外的物理逻辑,可以防止交互像你描述的那样爆炸性。
  • 将交互行为组件添加到您希望能够触摸或拾取的任何对象。

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

我认为您应该使用协程来移动它。您可以在此处找到更多信息:https://docs.unity3d.com/Manual/Coroutines.html 这应该无需太多代码即可解决问题。

最新更新