gpt4 book ai didi

android - 如何在用户触摸游戏对象时阻止 ARCore 模型放置?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:38 24 4
gpt4 key购买 nike

免责声明:我是 Unity3D 和 ARCore 的新手,所以请多多包涵。

我在 Unity3D 中使用 ARCore 创建一个场景,用户可以在屏幕上的 ScrollView 中选择模型并使用 Google 的 ARCore 框架放置它们。

到目前为止我已经成功了;用户触摸 ScrollView 中的一个模型(在屏幕上的 Panel 中显示为当前选择的模型,因为我的计划是让 ScrollView 切换可见性以获得更多屏幕 View 空间)。

问题是,当用户选择一个模型时,ARCore 会将模型放置在 ScrollView 和所选模型 Panel 对象所在的检测到的平面上(即使当您首先触摸以开始滚动 ScrollView)。请参阅下文以帮助形象化。

enter image description here

如何让 ARCore 将对象放在 ScrollViewPanel 后面?我尝试的是向我的 Controller (实际上只是 Google HelloARController)添加我想要阻止 ARCore 的 Raycast 并使用 foreach 遍历它们的对象集合> 查看 Raycast 是否命中集合中的 GameObjects

Touch touch;
if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
{
return;
}

//my code; above is Google's
foreach (var item in BlockingObjects) { //BlockingObjects is a List<GameObject>
if (IsTouchInObject(FirstPersonCamera.ScreenPointToRay(touch.position), item)) {
return;
}
}
//end of my code; below is Google's

TrackableHit hit;
TrackableHitFlag raycastFilter = TrackableHitFlag.PlaneWithinBounds | TrackableHitFlag.PlaneWithinPolygon;

IsTouchInObject 函数定义如下:

private bool IsTouchInObject(Ray ray, GameObject obj) {
RaycastHit rch;
Physics.Raycast (ray, out rch);
return (rch.collider != null);
}

失败的是 rch.collideralways null (我知道我不是在测试对象总而言之,一旦我能让 RaycastGameObject 实际发生碰撞,我就会担心这一点)。我试过使用 Physics/Physics2DRaycastHit/RacastHit2D 并附加 BoxCollider/BoxCollider2D 组件到我想检测命中的对象,但我所做的一切都不起作用。

(此解决方案取自 Unity3D 论坛上有人有类似问题的内容,但与 AR 无关,他们自己的 3D 世界带有 2D 叠加层。我找不到该论坛帖子提供引用,抱歉).

如有任何帮助,我们将不胜感激。

编辑/注意:我现在注意到 Canvas 上有一个 Graphic Raycaster 组件,其中包含我的 ScrollView 面板。我尝试将 Blocking Objects 设置为 Two D(同时将 Box Collider 2D 添加到 ScrollViewPanel) 和 Blocking MaskIgnore Raycast(以及其他一些东西)都无济于事。这些属性的值组合是否可以做到这一点?

本着今天约会的精神:

帮助我,StackOverflow...呃...Kenobi...你是我唯一的希望。

最佳答案

您是否尝试过使用以下方式包装 Raycast:

 if (!EventSystem.current.IsPointerOverGameObject(touch.fingerId)) {...}

https://answers.unity.com/questions/1406243/ui-in-arcore-helloar-example.html

关于android - 如何在用户触摸游戏对象时阻止 ARCore 模型放置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47839170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com