【问题标题】:Unity - MRTK - HoloLens: Modify Collider of 2D-Buttons so the Cursor gets closerUnity - MRTK - HoloLens:修改 2D 按钮的碰撞器,使光标更靠近
【发布时间】:2019-06-12 10:21:44
【问题描述】:

我目前的问题是光标离按钮太远了。您可以在屏幕截图中看到我的意思。将鼠标悬停在列表中的按钮上如下所示:

问题:我该怎么做才能使光标靠近按钮,因为在 HoloLens 上你看到了距离?

查看画布上除按钮之外的其他位置,光标越来越近:

--编辑--
我应该提到,场景有一个缩放的立方体(屏幕截图中的灰色物体),在它前面有一个世界画布(白色物体),其中包含滚动视图/列表。

【问题讨论】:

  • 是的,确认我看到了同样的行为

标签: unity3d augmented-reality hololens mrtk


【解决方案1】:

我看到 UI 元素的行为相同。

我只能为您提供一个解决方法。这有点hacky,但它有效:

  1. 浏览所有 UI 元素,尤其是TextImage,并禁用选项RayCast Target

    这使光标位于它们的正上方...但是您会注意到您的Buttons 现在没有响应并且您不能再与它们交互了。

    发生这种情况是因为物理系统需要 RayCastTarget 或 Collider 才能触发它的指针事件,例如PointerEnterPointerDown

  2. 因此,现在将 BoxCollidernot BoxCollider2D!)添加到您的 Buttons 并将其缩放到正确的大小。看起来您正在使用VerticalLayoutGroup,因此您可以通过将RectTransform 设置为居中一次来简单地纠正BoxCollider 的定位(VerticalLayoutgroup 无论如何都会重新执行左上锚定)。在我的情况下,BoxCollider 需要 0.8 和高度 0.1 ... 而对于 z 我选择 0.01 但如果你愿意,它可以更小

欢呼,现在按钮又可以交互了,光标只有通常的距离 + 选择的 z 的一半BoxColliders 的粗细。

由于背景立方体有它自己的BoxCollider,所以我们不需要为ScrollView 和UI 面板添加更多Colliders

如果需要,您可能还需要为 ScrollBars 添加一些内容!


如前所述,这更像是一种快速解决方法,可能不是最终解决方案,因为每当ButtonScrollRect 的大小发生更改时,您还必须重新处理那些硬编码的BoxCollider dimesnions ...

【讨论】:

  • 是的,我也刚刚意识到取消选中Raycast Target 可以解决这个问题,但没有考虑Box Colliders。如果在我的项目结束时我没有更好的解决方案,我会使用这个。谢谢! :)
【解决方案2】:

我在 3D 对象上也遇到过类似的问题。这可能会发生,因为对象碰撞定义。我的意思是,您可以导入渲染网格,但网格碰撞器可能不同(更大、更小……)

我希望这能解决你的问题;)

【讨论】:

  • 在普通的 3d 对象上你肯定有一个对撞机。但这是 Unity 的 2D 按钮,您无法访问那种按钮的碰撞器。 @derHugo 所做的是,他添加了一些对撞机作为一种解决方法
  • 哦,好的。我虽然你从 0 创建了你的按钮。我的错,对不起:(
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 2020-04-15
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多