使用steam开发HTC项目

前言:使用steam体验

    • 将mr项目转成htc

步骤一、下载htc 插件包

SteamVR Plugin | 整合 | Unity Asset Store
此时,我想用新的稳定版本的unity 目前最稳定的版本为2021.3.6f1c1 (注:f1c1为发行稳定版) 其中,在安装的过程中,选择安卓打包环境,即可匹配环境包。

由于安装过程中出现编辑器安装失败(安装失败: Installation Failed),你可以把你的VS卸掉,重新加载

image.png

先创建一个Demo 练练手

image.png

快速入门|SteamVR Unity Plugin (valvesoftware.github.io)

操作复制 JSON

单击“确定”以复制默认的 SteamVR 输入 JSON 文件。这些操作和绑定将帮助交互系统工作,并为您提供如何入门的示例。


image.png

保存并生成

复制这些文件并打开窗口后,单击底部的“保存并生成”按钮。这将保存您的操作并生成一些类来初始化它们,并使您可以在编辑器中和通过代码轻松访问它们。


image.png

问题

image.png

1、Assembly has reference to non-existent assembly 'Unity.XR.OpenVR' (Assets/SteamVR/Editor/SteamVR_Editor.asmdef)
解答:有人说用steam老版就好了,可是我没老版

找不到unity.XR.OpenVR
windows -> package manger 里面找到
或者说


image.png

编辑”->“项目设置”,在打开的项目设置窗格中,拉到最下面的“XR 插件管理”然后选择它。在里面,你可以看到“安装 XR 插件管理”的按钮,点击它,然后等上几分钟到数小时,直到安装完成。安装完成后,需要重启 Unity 编辑器。

重启完编辑器后,再进入到最底部的“XR Plug-in Management”则可以看到已经加载完成的“XR Plug-in Management”插件。勾选你打算适配的虚拟现实设备。


image.png

Tip:
Unity OpenVR 虚拟现实入门一:安装配置 Unity + OpenVR 环境
Unity OpenVR 虚拟现实入门二:一个最简单的虚拟现实游戏/程序 - walterlv

也有遇到问题啦,不过是因为许可证
登录账号->激活个人许可两个步骤,不然会新建项目的时候会发生奇怪的提示(启动编译器时出错,许可证无效)

导入插件之后

新创建一个场景,删掉原先的摄像机
从预制体中选择Player作为主摄像机, 第一个虚拟现实应用
因为我们刚刚安装了 SteamVR 插件,所以我们可以在界面的资产面板中看到“SteamVR”文件夹,定位到“SteamVR”-“InteractionSystem”->“Core”->“Prefabs”,找到“Player”,然后将它拖入到场景中(如图)。

image.png

image.png

拿起你的头戴式显示器(HMD,Head-mounted display),享受你的第一个虚拟现实应用(也许是游戏)吧!
这个时候有一个问题,就是电脑上只有一个HMD高清接口,而我的显示器也需要他(买个转接口)我使用的双屏,本就有一个不是高清接口也就无所谓了

Unity OpenVR 虚拟现实入门三:最简单的五指交互 https://blog.walterlv.com/post/unity-openvr-starting-3.html

Unity OpenVR 虚拟现实入门四:通过脚本控制手与控制器

Unity OpenVR 虚拟现实入门四:通过脚本控制手与控制器 - walterlv

Unity OpenVR 虚拟现实入门五:通过传送控制玩家移动 - walterlv

创建传送动作

在资源中定位到“SteamVR”->“InteractionSystem”->“Teleport”->“Prefabs”,找到“Teleporting”然后将它拖拽到场景中。

只需要运行场景,你就能发现在推动手柄摇杆时就能传送了:

创建传送目的地

依然是在“SteamVR”->“InteractionSystem”->“Teleport”->“Prefabs”中。这次,我们拖拽“TeleportPoint”进入场景。可传送到目的地

Unity OpenVR 虚拟现实入门六:通过摇杆控制玩家移动 - walterlv

选择所有与传送相关的游戏对象,右键然后“切换激活状态”。


image.png

编写移动玩家的脚本

选中“Player”,在检查器中添加组件。我们添加一个名为“PlayerMovementScript”的脚本。双击新添加的脚本文件,会用 Visual Studio 打开这个脚本文件,我们需要添加一点点的代码

using UnityEngine;

using Valve.VR;
using Valve.VR.InteractionSystem;

public class PlayerMovementScript : MonoBehaviour
{
    public SteamVR_Action_Vector2 input;
    public float speed;

    void Update()
    {
        var localMovement = new Vector3(input.axis.x, 0, input.axis.y);
        var worldMovement = Player.instance.hmdTransform.TransformDirection(localMovement);
        var worldMovementOfPlane = Vector3.ProjectOnPlane(worldMovement, Vector3.up);
        transform.position += speed * Time.deltaTime * worldMovementOfPlane;
    }
}

我们定义了两个属性:

  • SteamVR_Action_Vector2 类型的 input
  • float 类型的 speed

我们现在定义的这个 SteamVR_Action_Vector2 类型是 SteamVR 输入的一种类型,当使用 VR 控制器产生一个二维向量类型的数据时,就会生成 SteamVR_Action_Vector2 类型的数据。例如推动摇杆会产生这样的二维向量。我们稍后也会将这个类型绑定到摇杆上。

关于 SteamVR 能产生的其他输入类型,可以参考林德熙的博客:Unity3D OpenVR SteamVR Input Action 动作

float 类型则跟所有编程语言一样,只是一个浮点数而已。

Update 函数中:

  • input.axis.xinput.axis.y 是我们从 SteamVR 的二维向量中取得的 X、Y 分量;但是,我们将它转换成一个三维向量。这样,我们就能得到一个摇杆映射到三维坐标中与地面平行的平面上的坐标(相对坐标)。
  • 这个坐标是相对坐标,而要移动玩家,我们需要一个世界坐标下的移动向量,于是我们拿头显的变换量,将这个本地坐标转换到世界坐标中。最终得到的世界坐标,我们保存到了 worldMovement 变量中。
  • 为了避免让玩家移动到空中或地面以下,我们将 worldMovement 向量投影到与地面平行的二维平面上。
  • 最终,我们用速度、经过的时间和之前计算得到的二维平面上的世界三维坐标相乘,便得到了这一帧的移动向量,将其叠加到玩家的位置坐标上即得到了新一帧的玩家坐标。

设置 SteamVR 输入

现在,回到 Unity 编辑器中,在“Player”对象的检查器中,找到我们刚刚添加的“PlayerMovementScript”脚本,我们需要设置这个 input 属性应该由什么进行输入。

image.png

在这个下拉列表中,我们点击“Add”(添加)。我们添加一个新的(默认名字是 NewAction):
image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容