vr课设《梵高世界》第一人称的解谜游戏
一、游戏概念
1.名画介绍
梵高在这里提到《夜间咖啡馆》时写道: “我试图用红色和绿色来表达人类可怕的情感 ”。画中绿色和红色之间强烈的冲突营造出了一种紧迫压抑的感觉,与外景湛蓝静谧的夏夜形成了鲜明的对比。梵高用色彩来表达午夜低级场所内部空间的不安,午夜的咖啡厅是一个焦虑混乱,让人深陷的泥沼。这幅画的透视脱离常规,深度的线条不在同一个地平线上,它们略微弯曲,让你有被猛然拉进画里的感觉。在夜间咖啡馆,不管是画中的人,还是观画的人,都同样无法逃离出去。
2.梵高生平
文森特.梵高的爱情生活悲惨,遭遇了失败的恋情与残忍的拒绝。
解谜故事大纲
以下以玩家第一人称视角描述。
你一睁眼,发现自己正身处于这件夜晚咖啡厅中,你在台球桌发现了血迹,想要寻找纸巾擦拭,却在棋盘桌上发现了一个泛黄的信封。信封装着两张梵高《向日葵》画展的门票,还有一张小小的便签。便签上是熟悉的字迹,“与我约会的时候带上我最爱的向日葵吧!”“这是谁的?”你环顾四周,寻找到了插满向日葵的花瓶,每将花取出一朵,就有一段关于你与妻子的回忆浮现在眼前。原来你和妻子伉俪情深,而她却重病离世,之后你悲痛欲绝,酗酒度日。当你将最后一朵花取出时,意外的带出了钥匙。你用钥匙打开了橱柜,发现了一封遗书。你取出品读妻子离世前写下的这封遗书,她叮咛“我”不要因她的离世而酗酒,悲伤度日的。 你恍然大悟,将时钟拨回至零点,突然眼前一阵刺眼的白光,你不禁闭上双眼。睁开眼时,你已经回到了现代,身处梵高画展,面前正是这幅《夜晚的咖啡厅》。
主要的故事背景定好之后,就是构想玩法。
VR主要是一个身临其境,我们除了解密玩法还有漫游环节。
玩家可以与与线索物品进行交互,同时也可以和场景内的非线索物品进行交互。
二、美术资产
3构想好玩法后就开始制作美术资源,因为后期的vrtk脚本都是在此基础上去绑定的~
分别在maya中制作高低模型; 为了后续的交互功能实现,将橱柜拆分为:主体、抽屉、柜门等; 调整uv,使后续处理更加合理 在sp中为了仿制原木刷绿漆的效果,分别添加原木材质和绿木材质; 加入遮罩,得到想要的效果; 最后添加做旧效果;
画分为画和画框
需要合理拆分UI使得木纹能够真实,画则是使用了映射的手法绘制出来的,有点像拓印。
纸也是用映射的手法,还需要用智能遮罩,增加褶皱与污迹,达到做旧的真实质感
天空盒
1.用graph shader 用两种颜色做出渐变 voronoi做出星星
2.六张图拼凑成的天空盒
(1)将用于背景的图使用PhotoShop拆分拼接涂改为6张图,使得每张图的四条边都可与另外四张图的图案无缝拼接为指针部件添加Mesh Collider和Rigidbody
(2)在Assets中导入六张图并修改其Wrap Mode为Clamp
(3)新建材质修改其为Skybox/6 Sided,并在对应方位添加图片为指针添加Setup Interactable Object
(4)在Lighting Settings中修改Skybox Material为创建的Skybox
三、交互绑定
1.时钟交互——三把指针回到零点就可以跳转到现代画廊的场景,意味玩家逃出密室,从零开始开启新人生。
为左右控制器添加VRTK_InteractUse;
为指针部件添加Mesh Collider和Rigidbody 复制指针,并将复制品的Active改为false;
为指针添加ClockRotation脚本;
为指针添加Setup Interactable Object;
2.视频播放
点击墙上的四个按钮、分别播放梵高相关视频
(1)前期准备:利用VRTK通过射线与UI 交互 摘要:VR射出一条射线需要三个脚本 在手柄上挂
1、第一个是VRTK_Simple Pointer
2、第二个是VRTK_Controller Events
3、第三个是VRTK_UI Pointer
(2)在canvas上挂 vrtk_uicanvas ,Canvas设为世界空间,调整大小为合适。
(3).Unity视频播放的脚本控制
在完成基于VideoPlayer组件的视频播放基础上再加上脚本控制,实现对视频播放的切换、暂停及继续播放功能。
创建脚本VideoController 加入按钮
核心代码:
private void OnPlayOrPauseVideo() {
//判断视频播放情况,播放则暂停,暂停就播放,并更新相关文本
if (videoPlayer.isPlaying == true)
{
videoPlayer.Pause();
text_PlayOrPause.text = "播放";
}
else {
videoPlayer.Play();
text_PlayOrPause.text = "暂停";
}
}
3.退出游戏
设置EditorApplication的isPlaying属性为false即可退出编辑器模式
调用Application的Quit()方法即可退出程序
四、灯光和渲染——HDRP管线升级
为了高质量的画质,我们将内置管线升级为hdrp管线
1.pacage Manager 导入HDRP资源包 、
2.关闭工程文件再重新打开,在跳出的 Wizard 中点击“Fix all”
3.材质全变成品红色,在Edit>RenderPiline>Upgrade Project Material
4.新建Sky and fog Volumn,调整合适的曝光度
5.在场景中添加光源,调整强度,色温
6.根据材质进行调整,比如玻璃,
需要double-side两面渲染,
在映射中选择sphere等
画廊的灯光渲染
(1).新建Sky and fog Volumn
(2).在场景中添加光源,透光玻璃使用区域光,聚光灯使用手电筒,添加cookie
(3).烘焙LightingMap
这样就结束啦~
vr课设《梵高世界》第一人称的解谜游戏相关推荐
- 有趣的第一人称和第三人称游戏
有趣的第一人称和第三人称游戏 16340120 江城所在的数据科学与计算机学院 有趣的第一人称和第三人称游戏 前言 第一人称 -FPS一个简单的分类 第三人称 -代表作品 前言 相信基本大部分用电脑的 ...
- 设计解谜游戏的30堂课
设计解谜游戏的30堂课 文章目录 1.什么是Eureka Moment? 2.谜题与幽默是同构的 3.最大限度提高Sparkle 4.避免无意义的谜题 5.惊喜是Sparkle的重要源泉 6.有趣的事 ...
- 简单的(第一人称射击)FPS游戏
本篇文章基于上一篇文章: 使用unity3d搭建简单的场景以及第一人称角色的控制 1.给角色添加射击功能 通过射线射击,新建RayShooter.cs脚本,将该脚本添加到角色所包含的摄像机对象上,编辑 ...
- 【Unity入门计划】CreatorKitFPS:第一人称射击3D小游戏
目录 Unity学习教程 1 添加并载入项目资源 添加项目资源 载入到Unity 2 载入Scene 3 从预制体添加射击Targets 4 管理游戏对象 4.1创建分组关系 4.2 区分相对坐标&a ...
- 长江大学微型计算机课设报告,长江大学B第一学期计算机基础试卷.doc
长江大学B第一学期计算机基础试卷 2008─2009 学年 第 一 学期 < 计算机基础>课程考试试卷( B 卷) 专业:全校统考 年级:08级 考试方式:闭卷 学分:4 考试时间:120 ...
- 探寻宝藏 【算法设计与分析课设】 c语言代码 + 思路详解 + 三维优化
目录 1.题目 2.思路1 3.代码1 4.思路2 5.代码2 1.题目 传说HMH大沙漠中有一个M*N迷宫,里面藏有许多宝物.某天,Dr.Kong找到了迷宫的地图,他发现迷宫内处处有宝物,最珍贵的宝 ...
- Java课设对对碰_第11章对对碰游戏(图形版)(Java游戏编程原理与实践教程课件).ppt...
游戏界面和相关图片素材 11.3 程序设计的步骤 11.3.1 设计游戏窗口类(GameRoom.java) 游戏窗口类GameRoom实现游戏全部功能,继承JFrame组件实现的.是由上方Panel ...
- 【Vic的小课堂】Unity游戏功能(2)—第一人称镜头
·序言 "你最早喜欢上的游戏类型是什么?" 如果询问每一位游戏爱好者和游戏开发者,那么FPS(First-Person Shooting,第一人称射击)类型游戏必定是一个高频次出现 ...
- 【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 10 日,在 120 年前的今天,瑞典国王和挪威诺贝尔基金会首次颁发了诺贝尔奖.根据诺贝尔 ...
- 算法训练 审美课(《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都像)
问题描述 <审美的历程>课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手.老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都 ...
最新文章
- 八、mini2440裸机程序之UART(2)UART0与PC串口通信【转】
- 轻松得到C# ADO.NET的各种数据库连接字符串
- Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )
- Java Concurrent--死锁/饥饿/活锁
- jenkins 安装 和自动部署的 一些配置
- Python__正则表达式
- C#会对于未赋值的变量/成员变量,给予一个初始值吗?
- php fseek函数,C++_详解C语言中fseek函数和ftell函数的使用方法,fseek函数:int fseek(FILE * _ - phpStudy...
- 新浪微博搜索其实就是人肉索引擎!
- 强大的3D音效增强神器:Boom 3D for Mac中文
- java下雪_下雪屏保java,基础
- 面试心得与总结---BAT、网易、蘑菇街
- OpenGL集锦(1)-安装与概述
- 制作自己的openwrt刷机包_OpenWRT的ROM固件内置软件包修改与定制
- 光纤网卡和HBA卡有什么区别
- cass有坐标文件生成里程文件_CASS里程文件生成
- GMSSL :SM2椭圆曲线公钥密码算法——数字签名算法1
- 【转】从题库中随机抽取100道题生成试卷
- Tomcat内存大小配置
- 中软国际php,中软国际部分前端面试题