【问题标题】:How can I let an object stick to the hand instead of dropping it如何让物体粘在手上而不是掉落
【发布时间】:2019-04-26 00:59:23
【问题描述】:

对于一个项目,我想使用 Leap Motion 创建一个可以拾取对象的 VR 环境。到目前为止,捡起一个对象是有效的(使用 Leap 的 InteractionEngine 模块和 InteractionBehaviour 脚本),但是由于 Leap Motion 显然认为手正在放开对象,所以对象被丢弃了很多。出于我想要使用它的目的,一旦抓住物体,将其粘在手上就足够了,有点像粘手指。谁能帮我这个?我对 Leap Motion 很陌生,不知道从哪里开始。

我尝试使用 OnCollisionEnter (我不知道这是否是一个开始艰难的好地方),但是当手接触物体时它似乎没有记录碰撞。只有当物体落到地面时才会发生碰撞。

编辑:有关环境的更多信息 + 我对 OnCollisionEnter 的尝试:

This is the environment that I have right now

These are the important components of the object。 (ResetFood 是我编写的一个小脚本,用于将多维数据集重置为其原始位置,对此并不重要)。

这是我尝试使用 OnCollisionEnter 的脚本。

using System.Collections.Generic;
using UnityEngine;

public class StickToHand : MonoBehaviour
{

    private void OnCollisionEnter(Collision collision) {
        Debug.Log("Collision detected");
    }
}

当物体落在地上时只打印碰撞检测。

【问题讨论】:

  • 请展示一些工作
  • 我真的不知道这个节目是什么。我有一个带有跳跃动作的手、一个立方体和一个地面的场景,这样积木就不会掉下来。立方体有一个带有 OnCollisionEnter 函数的脚本,如果检测到碰撞,该函数会打印到控制台,但仅在对象掉到地上时打印一些东西,而不是在手接触对象时打印。立方体有 InteractionBehaviour 脚本。除此之外,真的什么都没有。你想让我展示什么?
  • @remy_rm 谢谢!我编辑了帖子。希望这能让它更清楚。
  • 您的“手”对象是否附有对撞机?如果他们这样做了,他们是否选中了“Is Trigger”?碰撞只能发生在两个具有碰撞器的对象之间,并将“Is Trigger”设置为 false。如果手牌选中了“Is Trigger”,则需要改用OnTriggerEnter
  • @remy_rm 这就是问题,谢谢!我现在设法让对象在食指和拇指与对象接触后保持在中间位置。

标签: c# unity3d leap-motion


【解决方案1】:

Debug.Log("Collision detected"); 没有被击中的原因很可能是因为您正在使用一个(或更多)碰撞器,该碰撞器已选中 Is Trigger 选项。

这会将对撞机变成触发器。这将使它忽略实际的碰撞,而只检查对撞机是否已进入另一个对撞机的空间。

根据触发器上的Unity docs

配置为触发器的对撞机(使用 Is Trigger 属性)不会像实体对象一样运行,只会允许其他对撞机通过。当碰撞体进入其空间时,触发器将调用触发器对象脚本上的 OnTriggerEnter 函数。

这反过来意味着如果 其中一个 碰撞器是触发器,则不会调用 private void OnCollisionEnter(Collision collision),因为没有碰撞。

而是调用OnTriggerEnter(Collider collider)

在立方体下落时打印Collision detected 的原因是因为你的立方体和地面都不是触发器,而是固体对撞机。让您的手很可能设置有触发器。

如果你使用

private void OnTriggerEnter(Collider collider)
{
    Debug.Log("Trigger detected");
}

当您触摸对象时,它应该在控制台中记录Trigger detected。在此方法中,您还可以使用 collider.gameObject 操作您正在触摸的对象

【讨论】:

  • 是的!然后为了让它粘住,你可以把它放在它碰撞的对撞机上,让它忽略未来的触发器,让它呆在那里。
猜你喜欢
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多