如何在 React VR 场景中检测 Gear VR 输入?
How do I detect Gear VR inputs in React VR scene?
我正在尝试使用 React VR 创建一个网络应用程序,运行 它使用 Samsung Gear VR。
我在场景中处于 VR 模式时看不到默认的白点(VR 指针)。因此 "onInput" 和 "onClick" 等方法不起作用。如果我在 VR 模式之外查看相同的场景,即使使用 Gear VR 中提供的浏览器,相同的方法也能正常工作。
我错过了什么吗?如何在 Gear VR 的 VR 模式下访问这些方法?
示例代码在普通网络浏览器(包括 Gear VR 中的浏览器)中运行良好,但在 VR 中却不行。
<Text
style={{
// backgroundColor: '#777879',
fontSize: 0.2,
transform: [{translate: [0, 0, -5]}],
color: this.state.textColor
}}
onEnter={() => this.setState({textColor: 'gold'})}
onExit={() => this.setState({textColor: 'white'})}>
This text will turn gold when you look at it.
</Text>
您需要添加一个光线投射器:
为此,您需要执行以下操作:
在您的项目中,转到 <project root>/vr/client.js
。
在 init
方法之前,添加一个 SimpleRaycaster
常量。
const SimpleRaycaster = {
getType: () => "simple",
getRayOrigin: () => [0, 0, 0],
getRayDirection: () => [0, 0, -1],
drawsCursor: () => true
};
function init(bundle, parent, options) {
//...
然后,在init
方法中,设置cursorVisibility: visible
并将raycaster添加到raycasters
的数组中:
function init(bundle, parent, options) {
const vr = new VRInstance(bundle, 'Example', parent, {
raycasters: [
SimpleRaycaster // Add SimpleRaycaster to the options
],
cursorVisibility: "visible", // Add cursorVisibility
enableHotReload: true,
...options,
});
vr.render = function() {
// Any custom behavior you want to perform on each frame goes here
};
// Begin the animation loop
vr.start();
return vr;
}
window.ReactVR = {init};
就是这样。现在你的视图中间应该有一个白点。
我正在尝试使用 React VR 创建一个网络应用程序,运行 它使用 Samsung Gear VR。
我在场景中处于 VR 模式时看不到默认的白点(VR 指针)。因此 "onInput" 和 "onClick" 等方法不起作用。如果我在 VR 模式之外查看相同的场景,即使使用 Gear VR 中提供的浏览器,相同的方法也能正常工作。
我错过了什么吗?如何在 Gear VR 的 VR 模式下访问这些方法?
示例代码在普通网络浏览器(包括 Gear VR 中的浏览器)中运行良好,但在 VR 中却不行。
<Text
style={{
// backgroundColor: '#777879',
fontSize: 0.2,
transform: [{translate: [0, 0, -5]}],
color: this.state.textColor
}}
onEnter={() => this.setState({textColor: 'gold'})}
onExit={() => this.setState({textColor: 'white'})}>
This text will turn gold when you look at it.
</Text>
您需要添加一个光线投射器:
为此,您需要执行以下操作:
在您的项目中,转到 <project root>/vr/client.js
。
在 init
方法之前,添加一个 SimpleRaycaster
常量。
const SimpleRaycaster = {
getType: () => "simple",
getRayOrigin: () => [0, 0, 0],
getRayDirection: () => [0, 0, -1],
drawsCursor: () => true
};
function init(bundle, parent, options) {
//...
然后,在init
方法中,设置cursorVisibility: visible
并将raycaster添加到raycasters
的数组中:
function init(bundle, parent, options) {
const vr = new VRInstance(bundle, 'Example', parent, {
raycasters: [
SimpleRaycaster // Add SimpleRaycaster to the options
],
cursorVisibility: "visible", // Add cursorVisibility
enableHotReload: true,
...options,
});
vr.render = function() {
// Any custom behavior you want to perform on each frame goes here
};
// Begin the animation loop
vr.start();
return vr;
}
window.ReactVR = {init};
就是这样。现在你的视图中间应该有一个白点。