School StartsFirstProject~UnityVR(HTCVive设备开发)(一)

简介: School StartsFirstProject~UnityVR(HTCVive设备开发)

个人介绍


我叫XXX,今年上大二,主学游戏开发虚幻引擎、Unity引擎,在校期间开发了很多小Demo我严格要求自己,自觉、遵纪、守时。本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。能够在最短时间内完成从学生到职业工作人员的转型,尽自己最大的努力融入新的工作生活。

新学期目标


①:学好新学期课程,好好学习天天向上💪

②:参加VR虚拟现实比赛

③:继续提升学历~争取考公务员💪

④:程序员坚持每天锻炼💪

1.gif

⑤:image.png

项目准备与介绍


前期准备如下:

①:SteamVR下载步骤 : 下载Steam链接 → 下载SteamVR1.2.2

②:VRTK3.2.1下载 :下载链接

项目介绍

☺:课程使用HTC Vive设备开发,使用 SteamVR1.2.2 和 VRTK3.2.1 版本开发。

☺:将游乐项目在VR里体验,使用新版VRTK实现了射线与UI的交互、新版VRTK的使用。

设备模样


image.png

设备图:

image.png

实现效果如下


image.png

导入素材


资源:image.png

SteamVR:image.png

VRTK:image.png

夸克网盘下载 ☑:下载链接

提取码:PCks

导入+ 创建相关文件夹如下图:

image.png

image.png

开始页UI简单搭建


image.png

效果如下:

image.png

开发步骤


1、使用预制体 Galaxy:


image.png

2、调整 Galaxy 和 SteamVR摄像机


如下图所示:

image.png

3、使用SteamVR摄像机


image.png

image.png

4、VR模拟UI界面搭建效果图如下:


1.摄像机使用世界坐标:

image.png

2.创建UI调整

image.png

image.png

5、VRTK 3.2.1v的相关使用


1.创建VRTK(添加VRTK_SDK Manager) 👉 创建空GameObject (添加VRTK_SDK Setup组件)

如👇:

image.png

6、手臂发射射线


要与UI交互需要添加 3个组件:

image.png

把renderer添加到PointerRenderer如下:

image.png

添加右手炳到RightController

image.png

效果如下:

image.png

7、UI交互


image.png

image.png

image.png

效果如 👇:

image.png

bug(射线移进Canvas就会碰撞检测)

image.png

解决如下:

image.png

射线与UI碰撞的原理如下:

image.png

检测自带的碰撞体与刚体如下:

image.png

效果如下:

image.png

8、射线触发UI播放对于的视频


image.png

9、创建LodingPageUI


效果如下:

image.png

10、完成过山车场景


image.png

7.png

VR设画面如下:

image.png

10.1、车到达终点播放声音


如下图:

image.png

11、托马斯场景泪水过山车


image.png

VR场景如下:

image.png

开发相关脚本


StartPage 脚本


实现的功能:开始结束按钮的相关逻辑

usingUnityEngine;
usingUnityEngine.UI;
usingUnityEngine.SceneManagement;
publicclassStartPage : MonoBehaviour {
//结束按钮privateButtonstartBut;
//退出按钮privateButtonexitBut;
privatevoidAwake()
  {
//获取相关组件startBut=transform.Find("StartBut").GetComponent<Button>();
exitBut=transform.Find("EquitBut").GetComponent<Button>();
  }
privatevoidStart()
  {
//开始按钮绑定相关事件startBut.onClick.AddListener(() =>    {
SceneManager.LoadScene("Scene2");
    });
//结束按钮绑定相关事件exitBut.onClick.AddListener(() =>    {
Application.Quit();
    });
  }
}



相关文章
|
Python
探索LightGBM:异常值处理与鲁棒建模
探索LightGBM:异常值处理与鲁棒建模【2月更文挑战第2天】
540 0
|
7月前
|
iOS开发 开发者
发现一款宝藏工具:Shots.so,几秒钟做出高级感 Mockup
这篇文章介绍了Shots.so这个在线工具,它能将普通截图转化为高质量的效果图,适用于设计展示、文章配图、产品宣传等场景,提供多种设备模板、背景风格和动态效果,操作简单,适合各类用户提升作品质感。
378 2
|
8月前
|
JSON API 数据安全/隐私保护
《5分钟学会生成API签名:Python实现京东/淘宝认证机制》
本文详解京东/淘宝API签名机制,涵盖签名原理、Python实现及常见错误解决方案,助你5分钟掌握核心逻辑,附完整代码,可直接复用,快速对接电商平台API。
|
存储 人工智能 uml
介绍一款好用的开源画图神器-draw.io | AI应用开发
draw.io 是一款基于浏览器的开源绘图工具,无需安装即可使用,支持多种操作系统和设备。其简洁的界面、丰富的形状库、智能对齐功能和强大的云端协作能力,使其成为专业人士和创意爱好者的首选。无论是产品设计、流程图绘制还是思维导图构建,draw.io 都能满足你的多样化需求。【10月更文挑战第7天】
1725 0
|
JavaScript 前端开发
将base64格式的图片画到canvas上(js和vue两种)
将base64格式的图片画到canvas上(js和vue两种)
1123 1
|
存储 Java 程序员
synchronized的原理以及与ReentrantLock的区别
`synchronized`和`ReentrantLock`均为Java线程同步机制,确保共享资源的单一时刻独占访问。`synchronized`关键字直接嵌入JVM,可通过修饰方法或代码块实现对象锁或监视器锁,具备可重入性,依赖Mark Word进行锁状态管理。`ReentrantLock`则需显式调用`lock()`和`unlock()`,提供更灵活控制,如公平锁、尝试锁及条件变量。两者在语法、灵活性和异常处理上有所差异,但均支持可重入性。性能方面,随JDK优化,`synchronized`在某些场景下甚至优于`ReentrantLock`。选择使用哪个取决于具体需求和上下文。
|
数据挖掘 Python
DrissionPage实战之采集猫眼电影top100榜
在信息化时代,数据的重要性日益凸显,特别是在充满活力的电影行业。猫眼电影作为中国领先的电影票务平台,提供了丰富的电影信息和用户评价,成为研究电影市场趋势的重要数据源。通过Python的DrissionPage库抓取猫眼电影Top 100榜单,不仅能够帮助影迷了解热门影片,还为制片方、市场分析师和投资者提供了宝贵的市场洞察。此项目通过自动化脚本定期更新数据,分析市场变化,助力精准决策。
397 0
|
编解码 Android开发 图形学
AVProVideo☀️一、一款U3D视频播放插件介绍
AVProVideo☀️一、一款U3D视频播放插件介绍
|
机器学习/深度学习 Python
训练集、测试集与验证集:机器学习模型评估的基石
在机器学习中,数据集通常被划分为训练集、验证集和测试集,以评估模型性能并调整参数。训练集用于拟合模型,验证集用于调整超参数和防止过拟合,测试集则用于评估最终模型性能。本文详细介绍了这三个集合的作用,并通过代码示例展示了如何进行数据集的划分。合理的划分有助于提升模型的泛化能力。
|
XML JSON Java
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
1708 1

热门文章

最新文章