android– 当用户触摸GameObject时,如何阻止ARCore模型放置?

android– 当用户触摸GameObject时,如何阻止ARCore模型放置?,第1张

概述免责声明:我对Unity3D和ARCore都很陌生,所以请耐心等待.我在Unity3D中使用ARCore来创建一个场景,用户可以在屏幕上的ScrollView中选择模型,并使用Google的ARCore框架放置它们.到目前为止,我有它的工作;用户触摸ScrollView中的模型(在Panel中作为当前选定的模型显示在屏幕上,因为我

免责声明:我对Unity3D和ARCore都很陌生,所以请耐心等待.

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

到目前为止,我有它的工作;用户触摸ScrollVIEw中的模型(在Panel中作为当前选定的模型显示在屏幕上,因为我的计划是让ScrollVIEw切换可见性以获得更多的屏幕视图空间).

问题在于,当用户选择模型时,ARCore会将模型放置在ScrollVIEw和所选模型Panel对象后面的检测到的平面上(即使您第一次触摸开始滚动ScrollVIEw).请参阅下文以帮助可视化.

如何让ARCore不将对象置于ScrollVIEw和Panel后面?我尝试过的是添加到我的控制器(实际上只是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'sforeach (var item in BlockingObjects) { //BlockingObjects is a List<GameObject>    if (IstouchInObject(FirstPersonCamera.ScreenPointToRay(touch.position), item)) {        return;    }}//end of my code; below is Google'sTrackableHit 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.collIDer总是为null(我知道我根本没有测试对象,我会担心一旦我能让Raycast实际上与GameObject碰撞).我已经尝试将Physics / Physics2D与RaycastHit / RacastHit2D一起使用,并将BoxCollIDer / BoxCollIDer2D组件附加到我想要检测到的对象,但我没有做任何工作.

(这个解决方案取自Unity3D论坛上的某些东西,其中有人有类似的问题,但没有AR,他们自己的3D世界有2D覆盖.我找不到该论坛帖子提供参考,对不起).

任何帮助将不胜感激.

编辑/注意:我现在已经注意到Canvas上有一个Graphic Raycaster组件,它包含我的ScrollVIEw和Panel.我已经尝试将阻挡对象设置为两个D(同时将一个Box CollIDer 2D添加到ScrollVIEw和Panel)和阻止掩码以忽略Raycast(以及其他一些东西)无济于事.这些属性的值是否可以组合使用?

本着今天的精神:

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

解决方法:

你有没有试过用以下方法包装Raycast:

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

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

总结

以上是内存溢出为你收集整理的android – 当用户触摸GameObject时,如何阻止ARCore模型放置?全部内容,希望文章能够帮你解决android – 当用户触摸GameObject时,如何阻止ARCore模型放置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1113742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存