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 UIScroll View 组件配合使用。当玩家朝向或指向 Scroll View 时,该组件允许玩家使用摇杆或滚轮滚动 Scroll View 中的内容。如果碰撞体是 Box Collider,该组件会自动设置其体积,以适配 Scroll View 的尺寸。

使用案例

Scroll View 滚动控制

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

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

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