vr课程设计大纲.docx

上传人:b****8 文档编号:23732314 上传时间:2023-05-20 格式:DOCX 页数:17 大小:22.39KB
下载 相关 举报
vr课程设计大纲.docx_第1页
第1页 / 共17页
vr课程设计大纲.docx_第2页
第2页 / 共17页
vr课程设计大纲.docx_第3页
第3页 / 共17页
vr课程设计大纲.docx_第4页
第4页 / 共17页
vr课程设计大纲.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

vr课程设计大纲.docx

《vr课程设计大纲.docx》由会员分享,可在线阅读,更多相关《vr课程设计大纲.docx(17页珍藏版)》请在冰豆网上搜索。

vr课程设计大纲.docx

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().position=(GameObject.Find("Camera")).GetComponent().position+normal*0.1f;

              cube.GetComponent().position=-((GameObject.Find("Camera")).GetComponent().position)+2f*((GameObject.Find("lazhu")).GetComponent().position);

              Debug.Log("asssssssssssssssssssssssssss");

              b=false;    

       }

       */

       //改变鬼的位置

       voidrun(){

              GameObject.Find("aa").GetComponent().position=-((GameObject.Find("Camera")).GetComponent().position)+2f*((GameObject.Find("lazhu")).GetComponent().position);

       }

}

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().enabled=false;

       }

       voidUpdate()

       {

              VRTK_ControllerEventsevents=GetComponent();

              events.TouchpadPressed+=newControllerInteractionEventHandler(OnWalk);

              VRTK_ControllerEventsevents1=GetComponent();

              events1.TouchpadReleased+=newControllerInteractionEventHandler(DontWalk);

       }

       privatevoidOnWalk(objectsender,ControllerInteractionEventArgsevents){

              outGround.GetComponent().enabled=true;

       }

       privatevoidDontWalk(objectsender,ControllerInteractionEventArgsevents)

       {

              outGround.GetComponent().enabled=false;

       }

}

 

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、 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1