首页 > 解决方案 > OnMouseDown 在 Vuforia 中不起作用 - Unity C#

问题描述

我正在使用 Vuforia 在 Unity 中测试 AR,但我无法让事件OnMouseDown()正常工作。

碰巧我第一次点击播放它有效,但只有一次。我已经检查过对撞机是否已激活并且位置正确。我还看到游戏对象(在这种情况下为立方体)中的脚本检查未启用,在制作组件时它甚至不像其他脚本那样出现。

这是代码:

using System.Collections.Generic;
using UnityEngine;

public class Click : MonoBehaviour
{
    void OnMouseDown()
    {
        Debug.Log("CLICK!!!");
    }
}

什么时候玩

什么时候在现场

在项目中

我在控制台中没有任何错误消息或警告。

这是存储库,分支develophttps ://github.com/emicalvacho/MapaMentalAR.git

标签: c#unity3daugmented-realityvuforiaonmousedown

解决方案


我刚刚发现:您总是将Hola文本悬停在对象上..而不是立方体。它阻挡了光线投射!

我是如何发现的:我编写了一个简单的脚本来找出当前悬停的内容:

public class RayDebugger : MonoBehaviour
{
    private void OnGUI()
    {
        GUI.color = Color.green;

        var hovering = EventSystem.current.IsPointerOverGameObject();

        var isHovering = hovering ? "Yes" : "No";

        GUI.Label(new Rect(100, 100, 200, 200), $"Is hovering something? - {isHovering}");

        if (!hovering) return;

        var pointer = new PointerEventData(EventSystem.current) { position = Input.mousePosition };

        var raycastResults = new List<RaycastResult>();
        EventSystem.current.RaycastAll(pointer, raycastResults);

        if (raycastResults.Count > 0)
        {
            GUI.Label(new Rect(100, 200, 200, 200), $"Currently Hovered: {raycastResults[0]}");
        }
    }
}

如您所见,它始终是您的“Hola”Text组件:

在此处输入图像描述

(是的,我只是使用了“动态图像”目标:D)


您可以通过几个步骤解决此问题:

  1. RaycastTarget在组件上禁用Text

    在此处输入图像描述

    这样它就不会干扰指针光线投射

  2. 要获得 3D 对撞机,您Camera应该PhysicsRaycaster附加一个组件:

    在此处输入图像描述

  3. 我不知道为什么,但它只有在你使用Perspective Camera时才有效。不知何故,Vuforia 似乎在使用Orthographic相机时遇到了问题。这是可以理解的,因为对于这样的相机,不存在距离。所以宁愿把你的相机换成Perspective

    在此处输入图像描述


现在我可以添加并单击立方体:

在此处输入图像描述


顺便提一句

我认为它不适用于 Overlay,但我可以尝试。

正如信息框所说,没有Camera引用(在您的场景中就是这种情况) a 的ScreenSpace - Camera行为等于 a ScreenSpace - Overlay


推荐阅读