1. 放置VR摄像机

  • 该部分就是将VR摄像机放入场景中即可,所以将之前设置的VR摄像机置为预制体(也可以按照之前放置VR摄像机中的步骤进行设置)
  • 设置该预制体:将该预制体下的所有子物体的位置进行重置(清除掉之前的设置:在图中位置右键->Reset),再进行相关设置

  • 打开任意一个游乐项目场景,这里以过山车为例,将VR摄像机放置到合适位置
  • 运行看看视野是否正常

2. 控制欢呼音效的播放时机和跳转场景

游乐项目结束时有一个欢呼音效并且倒数3秒后跳转回设备选择场景
通过项目Animation组件获取整个动画的时长,判断动画剩余时间小于等于10说明快到达终点了,开始播放欢呼音效并进行场景跳转

  • 在Scripts文件夹下新建一个名为AnimController的脚本并挂载到游乐设备身上
  • 编辑代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;public class AnimController : MonoBehaviour
{// 欢呼音效public AudioSource m_CheersAudio;private Animation m_Anim;//动画片段时间private float m_ClipTime;//是否播放欢呼音效,保证欢呼音效只播放一次private bool m_IsPlayCheersAudio = false;//动画是否播放完毕private bool m_IsEnd = false;// 计时器private float m_Timer = 0f;private void Awake(){// 获取到动画组件m_Anim = GetComponent<Animation>();// 动画时长m_ClipTime = m_Anim.clip.length;}private void Update(){m_ClipTime -= Time.deltaTime;if (m_ClipTime <= 10 && m_IsPlayCheersAudio == false){m_CheersAudio.Play();m_IsPlayCheersAudio = true;}// 判断是否结束if (m_ClipTime <= 0 && m_IsEnd == false){// 跳转场景SceneManager.LoadScene("MainScene");m_IsEnd = true;}}
}
  • 将Sound中的Cheers音效拖入Cheers Audio槽中
  • 运行看看能否正常播放欢呼音效和跳转场景

3. 场景跳转倒计时UI

  • 在VR摄像机中的Neck下创建一个Canvas,Position和Rotation全部置为0,修改其渲染模式为World Space,再在其下创建一个Image子物体并填充至一样大小以方便查看Canvas

  • 自行调整Canvas的缩放和位置,让Canvas以一个合适大小在摄像机前面
    + 再在Canvas下创建一体个Text

  • 在Res文件夹在创建一个名为Material文件夹并将资料中的Overlay.shader导入到该文件夹中,再在该文件夹中新建一个材质命名为Overlay并进行设置(Shader->UI->Overlay)

  • 将刚刚设置好的Overlay拖拽至Image的Material槽中,Text也是一样的操作

  • 之后再运行可以看到UI界面始终显示在3D物体的前面

  • 将Image删除,重新调整Text大小和位置,将内容改为3(因为倒计时从3开始),复制一份Text移动到上方,分别命名为Txt_CountDown、Txt_Hint并进行样式和内容设置(自行调整到适合位置就可以了)

  • 将Canvas命名为CountDownCanvas,在Scripts的UI文件夹下创建有个同名脚本并挂载到CountDownCanvas上,进行编辑

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class CountDownCanvas : MonoBehaviour
{public static CountDownCanvas Instance;private Text txt_CountDown;// 倒数时间private int m_Time = 3;   private void Awake(){Instance = this;txt_CountDown = transform.Find("Txt_CountDown").GetComponent<Text>();// 开始的时候隐藏,当倒计时的时候才出现gameObject.SetActive(false);}// 倒计时public void ReduceTime(){if (m_Time > 0){// 开始将Canvas显示出来gameObject.SetActive(true);txt_CountDown.text = m_Time.ToString();m_Time--;}}
}
  • 修改AnimController.cs脚本的 Update部分
private void Update()
{m_ClipTime -= Time.deltaTime;if (m_ClipTime <= 10 && m_IsPlayCheersAudio == false){m_CheersAudio.Play();m_IsPlayCheersAudio = true;}// 判断是否结束if (m_ClipTime <= 0 && m_IsEnd == false){// 跳转场景SceneManager.LoadScene("MainScene");m_IsEnd = true;}// 倒计时if (m_ClipTime <= 4){m_Timer += Time.deltaTime;if (m_Timer >= 1){m_Timer = 0;CountDownCanvas.Instance.ReduceTime();}}
}
  • 其他游乐项目一样的操作

虚拟现实大作业——VR游乐园(无设备开发)之4.游乐项目场景相关推荐

  1. 虚拟现实大作业——VR游乐园之需求分析文档

    虚拟现实大作业--VR游乐园之需求分析文档 一. 引言 1.1 编写的目的 本文编写的目的是为VR游乐园项目的开发提供: (1).软件要求:在Unity中,使用设备连接工具steamVR.VRTK电脑 ...

  2. OpenGL设计房间 (虚拟现实大作业)

    嘿嘿,课内虚拟现实课程的大作业,做了一个基于opengl房间,参考网上的一些资料,再进行一些扩充.还有一个unity3d的大作业将在之后上传. 项目说明: 本项目基于OpenGL实现,编辑器VS,使用 ...

  3. 网页/前端大作业 html+css 无js 前端三剑客 大一网页大作业 9个页面

    index界面 登录/迎接界面 html部分 <html><head><meta charset="utf-8"><title>我只 ...

  4. unity 3D打飞碟游戏,虚拟现实大作业

    unity 3D打飞碟游戏(下载链接在文末),包含游戏菜单,按钮,分数记载等等 点我下载资源 https://download.csdn.net/download/weixin_43474701/34 ...

  5. 大作业——OpenGL-基于物理的渲染挂线项目说明书

    提示:各种渲染效果的切换需要手动在片段着色器中切换FragColor的赋值函数 目录 简介 效果图 一.开发流程 1.环境配置 2.框架搭建 二.基础功能 1.图形绘制 2.着色器 3.纹理材质 4. ...

  6. C语言课设车票管理系统(大作业)

    C语言课程设计(大作业)(车票管理系统) 一.项目简介 设计一个车票管理系统实现录入.查看班次信息,售票,退票等基本功能.设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的.规模较大的问题, ...

  7. Bailian4149 课程大作业【DP】

    4149:课程大作业 总时间限制: 1000ms 内存限制: 65536kB 描述 小明是北京大学信息科学技术学院三年级本科生.他喜欢参加各式各样的校园社团.这个学期就要结束了,每个课程大作业的截止时 ...

  8. 嵌入式期末大作业——家用智能晾衣杆

    嵌入式期末大作业--家用智能晾衣杆 目录 嵌入式期末大作业--家用智能晾衣杆 前言 一.项目介绍 1.项目背景 2.项目构思 二.系统设计 1.系统概述 2.设计思路 3.设计草图 三.硬件设计 1. ...

  9. Eye of the Temple:在4平米玩出大空间VR效果的秘诀

    卧室只有4平米,能在VR中模拟森林等大空间场景吗?仅依靠视觉也许可以,但显然你很难走到森林尽头.不过,通过重定向等视觉欺骗,也许你可以通过在房间内"绕圈",来模拟在虚拟空间中无尽行 ...

最新文章

  1. 财务大数据比赛有python吗-Python 适合大数据量的处理吗?
  2. Kattis - bela
  3. 车道检测源码分析系列
  4. Android 优化电池使用时间——根据需要操作广播接收器
  5. OpenXLSX 中文字段读取问题
  6. 非常全面的阿里的Java面试题目,涵盖Java基础+高级+架构
  7. Turbo C 2.0、Borland C++库函数及用例
  8. URI,URL与URN的区别
  9. python sys.path
  10. @IT老司机 6月3日,扫除技术与产品选型难题,CSDN选型智囊团来了!
  11. isupper函数python_C 库函数
  12. Ubuntu 安装 中文输入法(Google 拼音)
  13. python发送邮件带附件_python 发送带附件邮件
  14. kell Vision5有那些使用技巧呢
  15. oracle 增加字段说明,oracle 增加字段
  16. shiro ajax 验证码,关于Shiro登录报验证码错误的问题
  17. Microsoft Teams 报错:We‘re sorry-we‘ve run into an issue.
  18. 赵鑫:强化学习在京东广告序列推荐中的应用
  19. CentOS 7.2 安装Subversion(SVN)
  20. java8新特性学习笔记之唠唠“匿名内部类与lambda”

热门文章

  1. CSS项下-角标效果实现
  2. 搜索热词自定义多样式视图
  3. app运营:用户留存率详解
  4. 【VRP问题】基于遗传算法求解带有时间窗、车载容量限制、多车辆、单配送中心路径优化VRPTW(多约束)matlab源码
  5. 考研英语阅读关于计算机课堂教学,2016考研英语阅读真题逐句拆分解析(165)...
  6. 2017年搜狐内推 面试题——谈谈面试中的算法
  7. 猎头职场:这些员工要自我调整了
  8. 索尼云游戏 低延时_索尼长期寻求多人游戏成功
  9. [半监督学习] Adversarial Dropout for Supervised and Semi-Supervised Learning
  10. CODING 企业微信小程序上线了