vr课程设计大纲.docx
- 文档编号:9619513
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:17
- 大小:22.39KB
vr课程设计大纲.docx
《vr课程设计大纲.docx》由会员分享,可在线阅读,更多相关《vr课程设计大纲.docx(17页珍藏版)》请在冰点文库上搜索。
vr课程设计大纲
vr课程设计大纲
湖北大学本科课程设计
题目VR鬼屋游戏设计
姓名吴为学号2014221104110062
专业年级14级信息安全
指导教师范清风职称
2016年12月15日
(没加页码,全部写完了再加)
一、设计任务
二、背景介绍以及产品概要
三、核心用户分析
四、MVP(核心玩法)
五、开发流程以及分工
六、主要思路介绍
七、每周报告
1、第一周
2、第二周
3、第三周
4、进行中.......
八、主要代码介绍
九、产品介绍
1、产品信息
2、用户反馈调查
十、产品版本下载
1、demon1下载
2、demon2下载
一、设计任务
设计一款高质量,互动性强,沉浸式,可以上架的VR鬼屋游戏。
产品包括完整游戏产品、产品代码、产品设计思路、开发流程。
最终完成学习VR技术的任务。
二、背景介绍以及产品概要
2016被称为VR元年。
随着VR技术极速发展,大学生也应该与时俱进,不断学习新知识,故于11月初借助设计一款产品,开始VR的学习之旅。
产品是一个VR鬼屋游戏,玩家在鬼屋里进行探索解密。
游戏场景是一个别墅,包括室内室外。
三、核心用户分析
游戏产品的服务对象为爱好恐怖游戏的青年玩家,作为这一用户群体,乐于接受新鲜事物,敢于探索。
用户举例:
姓 名:
王大
年 龄:
21岁
职 业:
学生
爱 好:
游戏,恐怖电影
讨 厌:
购物,家务
每日活动:
7:
00起床8:
00上课11:
30下课
13:
00午睡14:
00做作业,学习16:
00游戏
20:
00看恐怖电影23:
00睡觉
对于以上用户分析知道,这类用户存在广泛。
本产品受众广泛,隐藏大批用户,产品具有一定市场空间,定位于此类用户,接着进入开发环节。
四、MVP(核心玩法)
背景环境:
一个年代久远的破旧屋子(当前项目主要是一楼大厅)
故事梗概:
玩家打开屋子大门,进入之后来到阴森的大厅,门随之关闭无法打开;大厅的蜡烛绿闪烁着色火焰;窗帘随着风飘动,餐桌上整齐的摆放着餐盘还有刀叉,盘子里面有死老鼠、心脏;桌子上还有打火机和一只蜡烛;玩家伴随着自己的脚步声,探索着黑漆漆的大厅……
随着咚的一声,午夜12点到了,窗户啪的一声被妖风吹开,火盆的火、蜡烛全被吹灭了。
(桌子上的打火机和蜡烛有提示)玩家看见了打火机和蜡烛,当玩家用打火机点亮蜡烛的一瞬间,玩家面前出现了贞子的脸(贴脸杀),贞子快速的后退消失了;这时候玩家看到地面上有残肢断脚,听到了滴血的声音,玩家跟随血滴往上看,发现天花板下面吊着一堆尸体。
过几秒之后屋里随机生成一个发光的钥匙,同时二楼门也有提示,玩家拿着钥匙开启二楼门开启下一次恐怖体验……
具体模型:
1个大房子(本次项目针对一间房间);1扇门;1扇窗;1个窗帘;二楼1扇门;1双手(代替手柄);2个火炬,2个火炬光;1张桌子;6个盘子,6副刀叉;3个心脏;9只死耗子;10具尸体;1个断手,1个断脚;1摊血液;1只猫;5+1只蜡烛,1个打火机;1只钥匙。
对应音效:
脚步声;风声;钟声;开门声;滴血声;背景音乐;窗户关闭声;物体坠落地板声;呼吸声;心跳声
五、开发流程以及分工
Agender:
第一周:
游戏故事设定,确定美术风格,经典影视游戏作品分析研究,基本场景搭建,熟悉unity3D基本功能
第二周:
细化游戏机制,情节,梳理逻辑,美工丰富场景物件,程序员尝试基本交互
第三周:
美工完成贴图,程序员测试式编程,完成demo1.0
第四周:
美工完善灯光,材质,程序员完成所有交互完成demon2.0
第五周:
用户测试,根据反馈修改游戏,解决bug,美工进一步优化huanj
第六周:
完成beta版
ROLES:
PM:
吴为
美工:
周江峰章炜松
程序:
吴为蔡敏
六、主要思路介绍
1、环境声音:
环境声音的切换采用事件触发。
当用户在屋外时候播放屋外环境音效,当进入第一个触发器(在屋前的台阶),切换上台阶声音。
当进入第二个触发器(在屋子的门口),切换屋内音效。
(触发器代码见八、主要代码介绍)
2、屋外喷泉:
屋外喷泉采用视角触发事件,当视角到达触发器(在喷泉上),播放惊悚声音。
(触发器代码见八、主要代码介绍)
3、开门事件:
开门脚本采用VRTK插件解决
4、自动关门:
自动关门采用触发器触发关门,关门角度计算得到。
(触发器代码见八、主要代码介绍)
5、钟声:
钟声采用时间和触发器同时控制,时间运行开始时间在进入门口开始计时。
时间控制钟声发出。
(时间代码见八、主要代码介绍;钟声代码见八、主要代码介绍)
6、脚步声:
脚步声的控制根据手柄按钮,触发播放和停止。
(播放代码见八、主要代码介绍)
7、窗帘飘动:
由另一程序员实现。
8、挂画掉落:
由另一程序员实现。
9、风吹灭蜡烛:
由另一程序员实现。
10、以及其他思路
七、每周报告
第一周
姓名
每周工作内容
项目进度
下周工作计划
PM
吴为
明白鬼屋恐怖点,组员分配任务,搞清游戏逻辑,游戏情节设计
大部分场景搭建成功,unity基本功能学习,简单VRTK学习,简单交互实现,刚体,触发器学习。
美工,程序尚未合并
深化恐怖情节学习,恐怖情节设定,组内成员调节,情节继续设定,逻辑梳理
美工
周江峰
房间整体结构设计,大场景搭建
室内环境优化,完成贴图,材质。
章炜松
音效收集,素材收集
音效的整理,灯光的调节整理
程序
吴为
插件的学习,实现走动,物体抓取,碰撞体的学习,触发器的学习,手柄功能的学习,坐标系的学习。
鼠标跟随,开关灯
继续深化学习组件的学习,脚本的添加,脚本,组件的相互控制,脚本控制组件运行关闭。
蔡敏
手动和自动开关门,铰链学习,碰撞体触发学习,自动触发窗户开关,触发木马自己摇动,开关门实现过程,各种碰撞体的使用实施,加深音频的学习
学习unity的大部分功能,深化学习C#语言,unity的灯光学习
汇总日期:
11月13日报告人:
吴为
第二周
姓名
每周工作内容
项目进度
下周工作计划
PM
吴为
调节监督组员进度,完善游戏逻辑,情节,深化理解游戏核心玩法,游戏逻辑梳理
触发事件添加,场景基本成型,逻辑事件持续添加中。
用户调研,修改逻辑,优化用户体验,项目任务分配,组员调节
美工
周江峰
完成室内环境,室内物品摆放,完成贴图,材质。
修改物品。
添加修改物体属性,室外环境搭建,物品材质优化,贴图优化,收集整理游戏物品
章炜松
音效收集,素材收集,法线贴图灯光控制,
完成小部件修改,音效收集整理,环境控制
程序
吴为
完成脚本控制组件的,走动脚步声的触发,窗帘的飘动,灯光的添加,视角的触发,游戏全局时间的控制,位置触发的学习,脚本深化学习,物体追踪,利用时间控制触发事件,了解点积差积
游戏逻辑实现(钟声,窗户开关,画册位置改变,声音的触发切换,多种逻辑事件联动)
蔡敏
学习利用关节joint去开关门,以及上下楼梯过渡的动态效果,以及unity中的Navigation网格导航基本使用,以及mecanima动画状态机,开关门动态过渡效果实现,以及unity中简单音频学习实现,灯光的基本使用
根据速度,发出脚步声,接着开关门实现过程,以及各种碰撞体的使用实现,加深对音频的学习
汇总日期:
11月20日报告人:
吴为
第三周(会继续添加)
八、主要代码介绍
1、视角触发声音代码:
usingUnityEngine;
usingSystem.Collections;
publicclassNewBehaviourScript:
MonoBehaviour{
//publicGameObjectobj;
//publicGameObjectobj1;
privateboolb=true;
//privateVector3normal=newVector3(10,10,10);
publicboolisRendering=false;
privatefloatlastTime=0;
privatefloatCurTime=0;
//Usethisforinitialization
voidStart(){
}
//Updateiscalledonceperframe
voidUpdate(){
// Debug.Log("角度"+Vector3.Dot(transform.forward.normalized, obj.transform.position.normalized));
// Debug.Log("距离"+Vector3.Distance(obj.transform.position,transform.position));
isRendering=CurTime!
=lastTime?
true:
false;
lastTime=CurTime;
if(isRendering&&b){
run();
}
}
voidOnWillRenderObject(){
CurTime=Time.time;
}
//创建cube
/*
voidrun(){
GameObjectcube=GameObject.CreatePrimitive(PrimitiveType.Cube);
//cube.GetComponent
cube.GetComponent
Debug.Log("asssssssssssssssssssssssssss");
b=false;
}
*/
//改变鬼的位置
voidrun(){
GameObject.Find("aa").GetComponent
}
}
2、物体抓取代码
usingUnityEngine;
usingSystem.Collections;
[RequireComponent(typeof(SteamVR_TrackedObject))]
publicclassDragObjects:
MonoBehaviour{
//追踪设备
SteamVR_TrackedObjecttrackobject;
//监听输入事件
SteamVR_Controller.Devicedevice;
//Usethisforinitialization
voidAwake(){
trackobject=GetComponent
}
voidFixedUpdate(){
device=SteamVR_Controller.Input((int)trackobject.index);
}
//Updateiscalledonceperfram
voidOnTriggerStay(Collidercollider)
{
if(device.GetTouch(SteamVR_Controller.ButtonMask.Trigger))
{
Debug.Log("TriggerDown");
//collider.attachedRigidbody.isKinematic=true;
collider.attachedRigidbody.useGravity=false;
collider.gameObject.transform.SetParent(gameObject.transform);
}
if(device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger))
{
Debug.Log("TriggerUp");
//collider.attachedRigidbody.isKinematic=false;
collider.attachedRigidbody.useGravity=true;
collider.gameObject.transform.SetParent(null);
tossObject(collider.attachedRigidbody);
//tossObject(collider.attachedRigidbody);
}
}
voidtossObject(Rigidbodyrigidbody)
{
rigidbody.velocity=device.velocity;
rigidbody.angularVelocity=device.angularVelocity;
}
}
3、钟声触发
usingUnityEngine;
usingSystem.Collections;
publicclassbofang:
MonoBehaviour{
publicGameObjectobj;
privateVector3f1;
privateVector3f2;
privatestaticfloat t=0;
publicAudioClip[]source;
privateAudioSourceAs;
//Usethisforinitialization
voidStart(){
As=this.GetComponent
}
//Updateiscalledonceperframe
voidUpdate(){
f1=transform.position;
t+=Time.deltaTime;
if(t>1){
f2=transform.position;
t=0;
}
floatdis=Vector3.Distance(f1,f2);
//floatf=Vector3.Distance(obj.transform.position,transform.position);
if(dis>0.8){
play();
}
}
voidplay(){
As.clip=source[1];
As.Play();
f2=f1;
}
}
4、手柄控制走路发出脚步声
usingUnityEngine;
usingSystem.Collections;
usingVRTK;
publicclassjiaobusheng:
MonoBehaviour{
publicGameObjectoutGround;
publicGameObjectlouti;
publicGameObjectinground;
//Usethisforinitialization
voidStart(){
outGround.GetComponent
}
voidUpdate()
{
VRTK_ControllerEventsevents=GetComponent
events.TouchpadPressed+=newControllerInteractionEventHandler(OnWalk);
VRTK_ControllerEventsevents1=GetComponent
events1.TouchpadReleased+=newControllerInteractionEventHandler(DontWalk);
}
privatevoidOnWalk(objectsender,ControllerInteractionEventArgsevents){
outGround.GetComponent
}
privatevoidDontWalk(objectsender,ControllerInteractionEventArgsevents)
{
outGround.GetComponent
}
}
usingUnityEngine;
usingSystem.Collections;
publicclasslightCDon:
MonoBehaviour{
privatestaticfloattime=0;
public GameObject lightc=null;
//Usethisforinitialization
voidStart(){
}
voidUpdate(){
time+=Time.deltaTime;
intcout=(int)(time%3);
switch(cout){
case0:
lightc.SetActive(true);
break;
case1:
lightc.SetActive(false);
break;
case2:
lightc.SetActive(true);
break;
}
}
//Updateiscalledonceperframe
}
其他代码会补充
九、产品介绍
1、产品信息
产品名称 :
VR鬼屋
产品性质 :
VR产品
产品分类 :
恐怖游戏
主要开发工具:
unity
开发语言 :
C#
运行平台 :
steamVR
2、用户反馈调查
背景:
当游戏产品(demo1)的大体交互被设计出来,产品遇到了瓶颈。
产品难于加入更多的交互,或者是加入交互具有不确定性。
目标
1、对现有游戏产品的故事、环境、灯光,、音效、交互进行调研询问
2、对未来将要加入的或者将要改变的故事、环境、灯光,、音效、交互进行调研询问
3、根据调研情况进行下一步改进。
方法
在教室内,让同学试玩游戏,体验完游戏后进行询问,同时安排组员进行记录。
问题:
1、 你是否注意到脚步声的改变
2、 你是否注意到看着屋外泉水会发出惊悚的声音
3、 你是否注意到屋外路灯会闪烁
4、 你是否注意到环境音效的改变
5、 你是否注意到大门在进入之后被关上了
6、 你是否注意到屋里蜡烛会在钟声响起的同时熄灭
7、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vr 课程设计 大纲