Skip to main content

目光所至,交互即达: 基于视线与手柄射线的交互扩展 —— RayCastUtilities

VRChat 的原生交互方式主要集中在鼠标左右键,以及手柄的扳机键和抓握键上。这些交互方式可以满足大部分基础需求,但在某些场景中并不够便捷。

例如,在需要频繁滚动 UI 列表时,使用鼠标滚轮或手柄摇杆进行滚动,通常会比拖拽操作更加直接和高效。

RayCastUtilities 基于这一需求设计。它通过检测玩家视线和手柄射线指向,为指定场景物件提供摇杆和滚轮交互支持。

例如:

  • 允许玩家通过摇杆或滚轮滚动 UI 列表。
  • 当玩家视线或手柄射线指向某个区域时,允许玩家通过摇杆或滚轮调整物件属性,例如缩放、旋转、视口等,从而实现更丰富的交互体验。

演示世界: https://vrchat.com/home/world/wrld_48b9b922-85fd-44e7-8249-04a9f6db3740/info

安装

  1. 下载 Xuan25-VRC-Common-Utilities 组件包,并将其导入到你的 Unity 项目中。该组件包包含 UdonTelemetry 组件以及一系列相关依赖组件。你可以使用 Git 将其 clone 到项目的 Packages 目录下,或者直接下载压缩包并将其解压到该目录中。
  2. 在 Unity 项目中,找到 Packages/Xuan25 Common Utilities/RayCastUtilities/Examples 中的场景和预制件。他们包含了 RayCastUtilities 的核心组件以及一些示例组件,可以帮助你快速上手和测试 RayCastUtilities 的功能。

组件介绍

RayCastCollider

该组件允许创作者为玩家视线和手柄射线提供统一的碰撞体,以便实现交互功能。创作者可以在场景中任意包含物理碰撞体的物件上添加 RayCastCollider 组件来启用该功能。

RayCastControllerBase

这是一个抽象基类,提供了处理玩家视线和手柄射线交互的基础功能。创作者可以通过继承 RayCastControllerBase 并实现其抽象方法,创建自定义交互控制器,以满足特定的交互需求。

RayCastScrollViewController

这是一个 RayCastControllerBase 的实现,可与 Unity UI 的 Scroll View 组件配合使用。当玩家朝向或指向 Scroll View 时,该组件允许玩家使用摇杆或滚轮滚动 Scroll View 中的内容。如果碰撞体是 Box Collider,该组件会自动设置其体积,以适配 Scroll View 的尺寸。

使用案例

Scroll View 滚动控制

在一个包含多个 Scroll View 的场景中,可以在每个 Scroll View 物件上添加 Box Collider、RayCastCollider 和 RayCastScrollViewController 组件。

将 RayCastScrollViewController 组件的 Scroll Rect 字段设置为该物件上的 Scroll View 组件。将 RayCastScrollViewController 组件的 Ray Cast Collider 字段设置为该物件上的 RayCastCollider 组件。

这样,当玩家视线或手柄射线指向该 Scroll View 时,就可以通过摇杆或滚轮滚动 Scroll View 中的内容,从而实现更便捷的交互体验。