如何在一帧中用超级手和物理组件创建 'droppable' 盒子

How to create 'droppable' box with super-hands and physics component in a-frame

我正在尝试重新创建 superhands/physics a 帧演示的精简版本 here

所有 grabbing/dragging/physics 都运行良好,但我无法让 droppable 框在与 draggable 碰撞时触发事件。

Here is a fiddle 使用我的代码(所有脚本都很长)但是如果您希望我在这里复制代码,请告诉我。

我确定我在这里遗漏了一些简单的东西,但我看不到它,我觉得我拥有原始示例所拥有的一切,但我无法触发该事件,甚至无法记录某些内容到控制台。

这是我第一次涉足物理和控制器领域,如果我犯了一些新手错误,请见谅。我应该提一下,我最初是在桌面上使用鼠标拖动进行测试,希望在这里获得基础知识可以扩展到耳机。

一如既往地非常感谢您的建议。

在您当前的配置中,您只有可抓取的框,但没有可丢弃的目标,可见的碰撞检测:

 progressive-controls="objects: .tape"

将此更改为包含场景中所有交互式对象的选择器:

 progressive-controls="objects: .tape, #tape_player"

在内部,progressive-controls 使用 A-Frame raycaster 为桌面和移动模式设置碰撞检测,或使用 A-Frame Extras sphere-collider 为 roomscale 模式设置碰撞检测, (或您选择的另一个组件,如果您自定义配置)。它将您在 objects 属性 中定义的选择器传递给那些组件,以控制哪些实体将被 collisions/intersections 监视,并且只有那些实体将通过 super-hands 进行交互。

选择一个仅针对您想要交互的实体的区分选择器是一种很好的做法,因为碰撞检测会产生显着的性能成本,因此您不想浪费时间检查不必要的碰撞。