vr课程设计大纲docx.docx

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

vr课程设计大纲docx.docx

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

vr课程设计大纲docx.docx

vr课程设计大纲docx

vr课程设计大纲

湖北大学本科课程设计

 

题目VR鬼屋游戏设计

姓名吴为学号2014221104110062

专业年级14级信息安全

指导教师范清风职称

 

2016年12月15日

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、  你是否注意到油画掉落

8、  你是否注意到酒桶滚动

9、  你希望屋里的灯光更加明亮还是更加昏暗,来使游戏更有感觉

10、你是否希望加入背景音乐

11、你是否眩晕

12、你觉得移动速度快还是慢

13、你对桌子上摆放的东西的看法

14、你觉得屋里玻璃多还是少

15、你希望屋里的灯光偏什么颜色

16、你对游戏的故事有什么建议

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

当前位置:首页 > 经管营销 > 销售营销

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

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