使用 Vuforia 为 AR 应用程序检测在 Unity 中导入的 3d 模型上的触摸
Detecting touch on a 3d model imported in Unity for an AR application using Vuforia
我使用 Unity 和 Vuforia 构建了一个 AR 应用程序。所以基本上当我扫描某些东西时,我会看到一个模型。我已经移除了主摄像头,为此我们正在使用 AR 摄像头。
现在 运行 手机上的 apk 我想打开 url 或在触摸扫描图像后出现的 3d 模型时显示一些消息。
我知道它使用 Raycasting,但可以帮助我在单击 3d 模型时打开 url 的代码片段会有所帮助。我是 Unity 的初学者,因此非常感谢您的帮助。
您的模型需要附加碰撞器,以便光线投射注册碰撞。使用标签过滤光线投射结果也很方便。不过,您可以将图层蒙版用于相同的目的。 Input.touches return 上一帧中所有已注册触摸的数组,我们假设只注册了一个触摸,但如果你想要,你可以遍历所有触摸以防有多个触摸并检查如果他们中的任何一个击中了模型。然后,你可以这样做:
public void RegisterModelTouch()
{
// We assume that there was only one touch and take the first
// element in the array.
Touch touch = Input.touches[0];
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(touch.position);
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.CompareTag("YourModelTag"))
{
// Do something (open an URL in your case).
}
}
}
希望对您有所帮助。
我使用 Unity 和 Vuforia 构建了一个 AR 应用程序。所以基本上当我扫描某些东西时,我会看到一个模型。我已经移除了主摄像头,为此我们正在使用 AR 摄像头。
现在 运行 手机上的 apk 我想打开 url 或在触摸扫描图像后出现的 3d 模型时显示一些消息。
我知道它使用 Raycasting,但可以帮助我在单击 3d 模型时打开 url 的代码片段会有所帮助。我是 Unity 的初学者,因此非常感谢您的帮助。
您的模型需要附加碰撞器,以便光线投射注册碰撞。使用标签过滤光线投射结果也很方便。不过,您可以将图层蒙版用于相同的目的。 Input.touches return 上一帧中所有已注册触摸的数组,我们假设只注册了一个触摸,但如果你想要,你可以遍历所有触摸以防有多个触摸并检查如果他们中的任何一个击中了模型。然后,你可以这样做:
public void RegisterModelTouch()
{
// We assume that there was only one touch and take the first
// element in the array.
Touch touch = Input.touches[0];
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(touch.position);
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.CompareTag("YourModelTag"))
{
// Do something (open an URL in your case).
}
}
}
希望对您有所帮助。