背景

去年买了Meta Quest 3, 玩了几次之后就一直在吃灰. 每次录制五杀视频的时候, 总想用VR第一人称的方式去观察峡谷中的战斗, 可惜没法hack到游戏客户端.

所以我想着直接写个VR版的游戏, 把召唤师峡谷放进去. 这次Thunderdome正好就有机会去实现了. 我之前没做过任何游戏开发, 这次选Unity单纯是因为它的VR demo比较好. 在整个三天中, 我实际做的工作有限, 基本是根据VR Demo来改改实现自己的逻辑, 这里抛砖引玉, 希望大佬们不要嘲笑哈哈.

最后的游玩视频我放在B站了, 可以直接查看:

Unity学习

我对Unity一点不认识的时候, 先去youtube上面找了一些视频来看, 确保自己有个还算是正常的认知, 其实主要是学习一下C#以及模型的使用.

这是我看过的一些视频, 主要是

摄像头, 物体移动, 以及键盘鼠标交互

刚体碰撞

我自己是在Thunderdome前, 动手做了一个3D版简易的打地鼠. 到正式开始时才开始用VR demo重写. 类似这样:

模型与动作

我的模型都来源于这里

https://modelviewer.lol/model-viewer?id=142001

上次也用这些模型做了一个网页的Zoe

而且下载的glb格式其实是有动作的, 我在Unity中可以导入模型之后直接加动作效果

1726576122927.png

以剑魔为例, 直接将模型拖拽到场景之后, 添加Animator绑定到模型中就可以了.

1726583523512.png

碰撞与刚体

说来惭愧, 我现在只搞懂了刚体的概念, 以及碰撞的原理, 对于在Unity中怎么使用它还是完全懵逼, 这把亚托克斯的剑, 我是将它固定在demo中原有的一个枪上面, 而后增加了Mesh collider使其能够与其他模型发生交互.

1726584573687.png

VR调试与双项目编译

VR调试

VR项目的开发中, 我不可能每改一点代码就烧到机器中去调试. 所以, 开发过程中, 大部分的调试操作发生在开发过程中, 我使用XR Device Simulator来实现. 虽然不那么好用, 但是已经能够省很多时间了, 其实我觉得最优的方案是可以直接使用真的控制器.

1726583897573.png

在编译生成apk的时候, 手动去掉这个类的勾选即可, 或者我使用了另一种方案git pull --autostash 能够直接将这个类关闭.

双项目编译

Unity中编译项目会block掉整个项目的开发, 我原本打算用命令行来做, 后来想了想没心情再去研究. 所以我就开了另一个项目, 这个项目只进行代码pull.

1726583582235.png

在pull之后, 我手动触发编译按钮, 最后我得到了这么多的apk包, 其中能稳定运行的我打了stable.

1726583897573.png

C# 学习

我之前从没写过C#代码, 不过有ChatGPT的加持, 我能像编写Python代码一样让它帮我生成一部分内容. 自己组织的部分其实只有场景概念这些内容.

1726584937545.png

总结

不管是Thunderdome还是黑客马拉松, 我觉得都非常好玩. 但是参加的时候要考虑下, 规定时间之内能做哪些内容, 需要做什么样的提前准备. 我觉得前提是保证自己在有限时间内可以做点东西出来, 如果我一开始没做那个简单的3D项目甚至 没有对Unity有了个初步的认识, 可能TD的这两天完全都在入门, 根本不可能做的出来.