虚拟现实及数据可视化__Unity课程设计报告 (支康仪,张琦,朱雨婷,石彦飞,张桐)

合集下载

基于虚拟现实的建筑设计可视化实验报告

基于虚拟现实的建筑设计可视化实验报告

基于虚拟现实的建筑设计可视化实验报告一、实验背景随着科技的不断发展,虚拟现实(Virtual Reality,简称 VR)技术在建筑设计领域的应用越来越广泛。

虚拟现实技术能够为设计师和客户提供更加直观、沉浸式的设计体验,帮助他们更好地理解和评估设计方案。

本实验旨在探究虚拟现实技术在建筑设计可视化中的应用效果和优势,为建筑设计行业的发展提供参考。

二、实验目的1、研究虚拟现实技术在建筑设计可视化中的可行性和应用效果。

2、比较虚拟现实技术与传统设计可视化方法(如二维图纸、三维模型)的优劣。

3、探索虚拟现实技术在提高设计师与客户沟通效率、优化设计方案方面的作用。

三、实验设备与软件1、硬件设备高性能计算机虚拟现实头盔(如 HTC Vive、Oculus Rift)手柄控制器2、软件工具3D 建模软件(如 3ds Max、SketchUp)虚拟现实引擎(如 Unreal Engine、Unity)四、实验过程1、设计方案的创建首先,使用 3D 建模软件创建建筑设计方案的三维模型。

在建模过程中,注重细节的表现和材质的赋予,以提高模型的真实感。

2、模型导入虚拟现实引擎将创建好的三维模型导入虚拟现实引擎中,并进行场景的搭建和优化。

在引擎中,设置光照、阴影、物理效果等参数,使场景更加逼真。

3、虚拟现实交互设计利用虚拟现实引擎提供的交互功能,为用户设计操作方式和交互界面。

例如,通过手柄控制器实现行走、视角转换、物体选择等操作。

4、测试与优化在完成初步的虚拟现实场景后,进行内部测试。

邀请设计师和非专业人员体验虚拟现实场景,收集他们的反馈意见,并对场景进行优化和改进。

五、实验结果与分析1、直观性和沉浸感虚拟现实技术为用户提供了极其直观和沉浸式的体验。

用户可以身临其境地在虚拟建筑中行走、观察,从各个角度感受空间的布局和细节。

这种直观性和沉浸感远远超过了传统的二维图纸和三维模型,能够让用户更快速、更准确地理解设计方案。

2、沟通效率的提升在与客户的沟通中,虚拟现实技术展现出了显著的优势。

虚拟可视技术实验报告(3篇)

虚拟可视技术实验报告(3篇)

第1篇实验目的本次实验旨在了解虚拟可视技术的基本原理和应用,掌握虚拟可视软件的基本操作,并通过实际操作加深对虚拟可视技术在实际场景中的应用理解。

实验原理虚拟可视技术是一种利用计算机技术创建三维虚拟环境,通过视觉和听觉等多感官通道向用户展示信息的技术。

它基于计算机图形学、计算机视觉、人工智能等多个学科,通过模拟真实世界中的物体和环境,实现用户与虚拟环境的交互。

实验设备与软件- 实验设备:计算机(配置要求:CPU:Intel Core i5以上,内存:8GB以上,显卡:NVIDIA GeForce GTX 1050以上)- 实验软件:Unity 3D(三维游戏开发引擎)、Blender(三维建模软件)实验步骤1. 环境搭建:首先,在计算机上安装Unity 3D和Blender软件。

2. 三维建模:使用Blender软件创建实验所需的三维模型,包括虚拟场景中的建筑物、植物、人物等。

3. 材质与纹理设置:为三维模型添加材质和纹理,使模型在虚拟环境中更加真实。

4. 灯光设置:在Unity 3D中设置场景的灯光,包括日光、月光、室内灯光等,以模拟真实世界的光照效果。

5. 相机设置:在Unity 3D中设置相机参数,包括镜头焦距、视角、运动模式等,以实现用户在虚拟环境中的观察体验。

6. 交互设计:在Unity 3D中编写脚本,实现用户与虚拟环境中的物体进行交互,如点击、拖拽等。

7. 场景渲染:完成所有设置后,进行场景渲染,预览虚拟环境效果。

8. 实验评估:对实验结果进行评估,分析虚拟可视技术在实际应用中的优势和不足。

实验内容1. 三维建模:创建一个简单的虚拟场景,包括一栋建筑物、一片草地、几棵树和一个人物。

2. 材质与纹理设置:为建筑物、草地、树木和人物添加相应的材质和纹理,使场景更加真实。

3. 灯光设置:在场景中设置日光、月光和室内灯光,模拟真实世界的光照效果。

4. 相机设置:设置相机参数,实现用户在虚拟环境中的观察体验。

虚拟现实技术实习课程报告

虚拟现实技术实习课程报告

虚拟现实技术实习课程报告一、实习背景及目的随着科技的飞速发展,虚拟现实技术逐渐成为人们关注的热点。

作为一种可以创建和体验虚拟世界的计算机仿真系统,虚拟现实技术在各个领域都取得了广泛的应用。

为了深入了解虚拟现实技术,提高实际操作能力,我选择了虚拟现实技术实习课程。

本次实习旨在掌握虚拟现实技术的基本原理、相关软件和硬件设备的使用,以及实际应用场景的搭建和调试。

二、实习内容与过程1. 虚拟现实技术基础知识在实习的第一周,我们主要学习了虚拟现实技术的基本概念、发展历程、关键技术以及应用领域。

通过学习,我了解到虚拟现实技术是一种可以使人产生沉浸感的仿真技术,涉及到计算机图形学、人机交互、传感技术等多个领域。

2. 虚拟现实开发工具与软件在实习的第二周,我们学习了虚拟现实开发过程中常用的工具和软件。

包括Unity3D、Blender、Maya等三维建模和渲染软件,以及VRML、Unreal Engine等虚拟现实开发引擎。

通过实际操作,我掌握了这些软件的基本功能和操作技巧。

3. 虚拟现实硬件设备在实习的第三周,我们学习了虚拟现实硬件设备的基本原理和使用方法。

包括头戴式显示器(HMD)、位置追踪器、手柄、3D打印机等。

通过动手实践,我了解了这些设备的工作原理和如何搭建虚拟现实场景。

4. 虚拟现实应用场景设计与调试在实习的第四周,我们结合实际案例,学习了虚拟现实应用场景的设计与调试。

包括虚拟现实教学、医疗、娱乐、军事等领域的应用场景。

我参与了场景设计、编程和调试过程,掌握了虚拟现实应用的搭建方法。

三、实习收获与反思通过本次实习,我对虚拟现实技术有了更深入的了解,从理论到实践都取得了一定的成果。

在实习过程中,我学会了使用虚拟现实相关软件和硬件设备,掌握了虚拟现实场景的设计与调试方法。

此外,我还拓宽了视野,了解到虚拟现实技术在各个领域的广泛应用。

然而,本次实习也让我认识到虚拟现实技术仍存在一些问题和挑战。

例如,虚拟现实设备的成本较高,普及程度有限;虚拟现实内容制作复杂,技术门槛较高;虚拟现实技术在实际应用中可能存在安全隐患等。

unity课程设计报告(刘卉和沈玉婷)

unity课程设计报告(刘卉和沈玉婷)

课程:Unity3D课程设计题目:小球吃宝石班级:数媒0902学号:0305090205/0305090206 姓名:刘卉/沈玉婷日期:2012.12网络游戏是一种新型的IT产业。

我们研究主要内容是网络软件设计方法,网络游戏:英文名称为Online Game,又称“在线游戏”,简称“网游”。

指以互联网为传输媒介,以游戏运营商服务器和用户计算机为处理终端,以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性多人在线游戏。

本报告主要讲述了这个小游戏的设计思路及初步使用Unity3D 软件的感受和总结。

设计过程中,首先建立自己想要的模型,然后在此基础上进行需求迭代,详细设计时不断地修正和完善,经过测试阶段反复调试和验证,最终形成达到设计要求的小游戏。

基于视频教程“平衡球”的基础,构建了一个益智游戏风格的游戏,并有主角(小球)与关卡(一关)、游戏逻辑(触碰宝石)、游戏环境界面(环形轨道)等设计,使得玩家可以在场景轨道中进行小球吃宝石的冒险游戏。

本游戏的控制很简单,及用键盘的上下左右(或WSAD)四个箭头控制小球的上下左右四个方向,用户根据自己的战略方式选择小球能吃到宝石的最佳捷径,从而一步步吃掉所有宝石。

分工:刘卉——场景的构建和小球、宝石等道具的设计;沈玉婷——游戏内容的构思设计和程序代码的编写。

关键词:网络游戏、小球吃宝石、浏览器形式。

《网络游戏程序设计》这一课程以大作业形式进行考核,能更好地锻炼学生综合运用本课程所授知识的能力。

大作业主要内容为设计完成面向某一主题内容的游戏演示程序。

自选游戏主题,并根据所选定的主题内容设计一个典型的游戏场景及玩家逻辑,其中包含主角与关卡,游戏逻辑,游戏环境界面与交互过程等的设计;开发完成与设计相符的游戏Demo。

要求使用Unity3D游戏开发软件实现上述游戏Demo。

三、具体要求1、每人单独完成,特殊可由2人合作完成。

2、游戏主题自拟。

unity课程设计报告

unity课程设计报告

unity课程设计报告一、教学目标本课程的教学目标是使学生掌握Unity的基本操作和编程技巧,能够独立完成简单的游戏开发。

具体目标如下:1.了解Unity的用户界面和基本操作。

2.掌握Unity中的物体操作、变换、事件处理等基本概念。

3.理解Unity的脚本编程原理和常用的脚本语法。

4.能够使用Unity进行基本的场景搭建和物体操作。

5.能够编写简单的Unity脚本来控制游戏对象的行为。

6.能够利用Unity的API进行进阶的操作,如使用物理引擎、音效等。

情感态度价值观目标:1.培养学生的创新意识和团队合作精神,鼓励他们独立思考和解决问题。

2.培养学生对游戏开发的兴趣和热情,提高他们对编程和设计的认识。

二、教学内容本课程的教学内容主要包括Unity的基本操作、脚本编程和进阶技巧。

具体安排如下:1.Unity的基本操作:介绍Unity的用户界面、物体操作、变换和事件处理等基本概念和操作。

2.Unity的脚本编程:讲解Unity的脚本语法、常用脚本结构和编程技巧。

3.Unity的进阶技巧:介绍Unity的物理引擎、音效、动画和UI等进阶功能的使用方法。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过讲解和演示Unity的基本操作和脚本编程,使学生掌握Unity的基本概念和技巧。

2.讨论法:学生进行小组讨论,鼓励他们提出问题、分享经验和解决问题。

3.案例分析法:分析实际的游戏开发案例,使学生了解Unity在实际项目中的应用和技巧。

4.实验法:安排实验课程,让学生亲自动手操作Unity,巩固所学的知识和技巧。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《Unity游戏开发实战》或《Unity 2D游戏开发》。

2.参考书:提供相关的Unity教程和开发文档,供学生自主学习和参考。

《可视化编程》课程设计报告书

《可视化编程》课程设计报告书

河南城建学院《可视化编程》课程设计报告书设计题目:指导老师:张俊峰张妍琰、张翼飞学生学号:083212XXX学生姓名:同组人员:时间:2013年1月XX日目录第1章选题 (2)1.1题目背景 (2)1.2系统实现的具体分工 (2)1.2.1 标题 (2)1.3开发环境 (2)第2章设计内容 (3)2.1需求分析 (3)2.2概要设计 (3)2.3界面设计 (3)第3章系统实现 (4)3.1涉及知识点 (4)3.2系统运行(主要运行界面抓图) (4)3.3源程序清单(关键代码) (4)第4章结束语 (5)第1章 选 题文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。

1.1 题目背景文本文本文本文本文本文本文本文本文本文本文本。

1.2系统实现的具体分工文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。

1.2.1 标题文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。

1.3开发环境文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本,正文插图表示例:表1.1 表题目图1.1 图题目文字t第2章设计内容文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。

2.1实现功能文本文本文本文本文。

2.2 概要设计(涉及类的框图)文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文。

2.3 界面设计文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。

第3章系统实现文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。

虚拟显示及数据可视化__Unity课程设计报告

虚拟显示及数据可视化__Unity课程设计报告
}
if(Input.GetKey("left"))//按键控制左
{
this.transform.position-=newVector3(0.5f*Time.deltaTime,0.0f,0.0f);
}
}
(4)碰撞检测
当小鸟飞到伙伴附近时可以进行营救。为实现该功能,我们在bird_1.cs脚本中添加碰撞检测函数。具体代码如下:
(7)Level_5
(8)坦克大战
(9)坦克大战预置体和粒子效果
(2)对小鸟进行属性设置。添加碰撞体属性(球体碰撞体SphereCollider)并取消其重力属性。由于碰撞体具有碰撞性质,故当检测到小鸟碰撞到墙壁,小猪等障碍物时,可以通过判 断碰撞体发生碰撞来实现结束游戏的功能。(墙壁四周放置了cube,对cube添加碰撞体属 性)。
(3)控制小鸟运动的实现
为了实现对小鸟运动的控制,我们对其添加脚本文件(C#Script)。具体代码如下(bird_1):
4
[1]MichelleMenard《Unity游戏开发实战》机械工业出版社2012年4月[2]/link?url=NeLL_E6Y0Y3wZnKiqd0vhen9tAWVJ937ILAgoy1FWgNf80grSaM_FdrBh32eqkEcWY《UNITY3D入门教程》
孙立博仪器科学与工程学院
1.4作品简介
本款“愤怒的小鸟之营救伙伴”旨在给大学的忙碌增添一丝闲暇与趣味,给大脑的疲劳 一丝放松与悠闲,抛开一切烦恼,尽情的享受课余生活。
本游戏通过Unity3D设计,游戏的控制机理和赛车控制游戏相同。对网上现有的游戏愤怒的小鸟进行了一些修改,对按键的效果进行了改进并对游戏的难度进行了一定的修改。 整个项目共有初始UI界面(welcom和next),1~5游戏关数共7个场景。愤怒的小鸟通过 穿越障碍,来到小伙伴被困住的地方,从而完成营救的目的。在愤怒的小鸟穿越障碍的时候, 如果碰到障碍(如墙壁等),意味着营救失败。本游戏界面良好逼真,控制简单,游戏难度 设置合理,背景音乐悦耳,再加上愤怒的小鸟原有的人气,使得本款游戏具有较大的吸引力。您可以在本游戏中进行的享受愤怒的小鸟的世界!

虚拟现实及数据可视化__Unity课程设计报告 (支康仪,张琦,朱雨婷,石彦飞,张桐)

虚拟现实及数据可视化__Unity课程设计报告 (支康仪,张琦,朱雨婷,石彦飞,张桐)

1东南大学仪器科学与工程学院虚拟现实与数据可视化Unity 课程设计设计名称:TankWar院系名称:仪器科学与工程学院测控技术与仪器小组成员:支康仪22012235石彦飞22012216张桐22012213朱雨婷22012207张琦22012206指导老师:孙立博报告时间:2015 年01月04 日目录1、前言 (3)1.1 作品名称 (3)1.2 作品成员和分工 (3)1.3 指导老师 (3)1.4 作品简介 (3)2、系统方案 (4)2.1 使用说明 (4)2.2 设计方案 (4)2.2.1场景的制作以及坦克模型的导入 (4)2.2.2 坦克移动,子弹效果以及MouseLook的实现 (6)2.2.3 AI的实现 (8)2.2.4 游戏场景切换的实现 (10)3、课程设计总结 (11)4、参考文献 (12)5、附录部分 (12)5.1 小组成员分工 (12)5.2 作品效果图 (13)231、前言1.1 作品名称TankWar1.2 作品成员和分工1.3 指导老师孙立博仪器科学与工程学院1.4 作品简介游戏是娱乐生活的重要部分,对于缓解压力有着极大的作用。

而坦克大战作为我们童年的经典的一款游戏,其已经带给我们难以忘怀的回忆。

通过这学期虚拟现实课程的学习,我们小组将unity 3d 与射击游戏相结合,制作了一款精彩纷呈的3D 坦克大战游戏,整个过程将所学的知识与实践相结合,帮助我们对于unity 3d 的应用有了更深的了解。

我们设计的这款名为TankWar 的3D 坦克大战游戏一共分为三关。

第一关设置的是荒漠场景,给人一种苍凉的感觉,我方坦克和敌方坦克在一望无际的荒漠上激战,实在是让人酣畅淋漓。

第二关设置的是沼泽森林,同样的作战手法不同的环境也让人耳目一新。

最后一关双方坦克开进了人们所生活的城市,在高楼林立中展开一场激战。

三个关卡的难度逐渐增加,梯度合理,让人想挑战且欲罢不能,具体难度设置可从下表看出:42、系统方案2.1 使用说明1)开发环境:Unity 3D 2)操作方法(按键控制)2.2 设计方案2.2.1 场景的建立整个游戏分成三关实现,所以需要绘制三个场景。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1东南大学仪器科学与工程学院虚拟现实与数据可视化Unity 课程设计设计名称:TankWar院系名称:仪器科学与工程学院测控技术与仪器小组成员:支康仪22012235石彦飞22012216张桐22012213朱雨婷22012207张琦22012206指导老师:孙立博报告时间:2015 年01月04 日目录1、前言 (3)1.1 作品名称 (3)1.2 作品成员和分工 (3)1.3 指导老师 (3)1.4 作品简介 (3)2、系统方案 (4)2.1 使用说明 (4)2.2 设计方案 (4)2.2.1场景的制作以及坦克模型的导入 (4)2.2.2 坦克移动,子弹效果以及MouseLook的实现 (6)2.2.3 AI的实现 (8)2.2.4 游戏场景切换的实现 (10)3、课程设计总结 (11)4、参考文献 (12)5、附录部分 (12)5.1 小组成员分工 (12)5.2 作品效果图 (13)231、前言1.1 作品名称TankWar1.2 作品成员和分工1.3 指导老师孙立博仪器科学与工程学院1.4 作品简介游戏是娱乐生活的重要部分,对于缓解压力有着极大的作用。

而坦克大战作为我们童年的经典的一款游戏,其已经带给我们难以忘怀的回忆。

通过这学期虚拟现实课程的学习,我们小组将unity 3d 与射击游戏相结合,制作了一款精彩纷呈的3D 坦克大战游戏,整个过程将所学的知识与实践相结合,帮助我们对于unity 3d 的应用有了更深的了解。

我们设计的这款名为TankWar 的3D 坦克大战游戏一共分为三关。

第一关设置的是荒漠场景,给人一种苍凉的感觉,我方坦克和敌方坦克在一望无际的荒漠上激战,实在是让人酣畅淋漓。

第二关设置的是沼泽森林,同样的作战手法不同的环境也让人耳目一新。

最后一关双方坦克开进了人们所生活的城市,在高楼林立中展开一场激战。

三个关卡的难度逐渐增加,梯度合理,让人想挑战且欲罢不能,具体难度设置可从下表看出:42、系统方案2.1 使用说明1)开发环境:Unity 3D 2)操作方法(按键控制)2.2 设计方案2.2.1 场景的建立整个游戏分成三关实现,所以需要绘制三个场景。

第一个场景是荒漠,第二个场景是森林,我们使用上课学过的unity3d 中建立地形的方法,第一关和第二关均是自己绘制的。

最后一关我们想寻求新意,于是从网上下载了一个城市的3d 模型导入建好的场景里边,并通过在建筑物上加cube 来给其中的建筑物赋予了rigidbody 这一物理属性使其可以检测碰撞等。

第一关最后在场景面板中(俯视): 在游戏面板中显示如下:5第二关展示:第三关:以上是我们游戏的三个场景,因为坦克大战并不需要赛道之类的东西,所以其实场景绘制还是比较简单,我们基本上是利用unity3d 自带的资源包,只在第一关中导入了一些岩石模型以及荒漠的纹理图片,当然,第三关也是导入模型并给其添加物理属性。

整个游戏场景的制作到此基本完成。

2.2.2坦克模型的导入敌方坦克和玩家坦克均是通过导入模型建立起来的,这些模型是我们从网站上搜寻的资源。

坦克的构成由几个部分组成,为了实现鼠标控制视角的功能,我们还在坦克中内置了一个摄像头,以及为了实现坦克开前灯的效果我们在坦克中添加了一个点光源。

我们可以从层次面板中看到:6坦克的具体组成部分如下: 玩家坦克:其中炮筒如下: 坦克基座如下:再加上光源,相机,以及连接炮筒和基座的两个cube(为了使得炮筒旋转),最后给坦克模型加上rigidbody 这一物理属性,整个坦克模型就制作完成了。

为了在游戏中能区分敌我,增加游戏的可玩性,敌方坦克与玩家坦克造型略有不同,但是制作和导入方法相似,最后的敌方坦克我们做成如下:完成了玩家坦克的导入后,下面所进行的工作即为给坦克添加脚本来实现复杂的功能。

2.2.2坦克移动,子弹效果以及MouseLook 的实现2.2.2.1坦克的移动移动是坦克作战中最为基础的部分,为了实现这个功能,我们给坦克添加了一个TankMover的7 脚本,其中实现移动的代码如下:this.transform.Rotate(new Vector3(0,Input.GetAxis("Horizontal")* TurnSpeed * Time.deltaTime,0)); this.transform.position += this.transform.forward * Input.GetAxis("Vertical") *Speed* Time.deltaTime;主要Input.GetAxis 这个函数来获取移动或是旋转的方向(响应键盘按下的键值,这一部分在unity 中已经集成好的)并乘以相应的速度和时间,分别控制坦克前进后退以及左右旋转。

其中speed 是我们之前所设定的值,水平方向则旋转,垂直方向则前进后退。

2.2.2.2鼠标控制视角实现这个函数实现的比较复杂,我们参考了unity3d 自带的第一人称控制的相关代码并修改了有关参数。

这里只截取其中关键的一部分来进行简单说明: 主要是通过枚举来实现三种情况的鼠标控制:if (axes == RotationAxes.MouseXAndY)//可以上下左右旋转 { float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);//限定在最大最小值之间 transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); } else if (axes == RotationAxes.MouseX)//只能左右旋转 { transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0); } else //只能上下旋转 { rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0); }代码中共枚举了鼠标变化的三种状态,分别给出相应的旋转角度,方向等。

通过获取鼠标变化的方向再乘以相应的灵敏度来得到变化的角度,并通过transform 域操作来更新坦克的状态。

2.2.2.3发弹效果实现本游戏中控制坦克发弹主要通过两个函数WeaponController 和WeaponLauncher 来实现,WeaponLauncher 中又调用了shoot 函数来控制炮弹发射间隔时间以及数量(AI 中敌方坦克是自行发射炮弹的),通过不断对炮弹这一预设进行实例化,当检测到碰撞时给对象造成一定的伤害值,并且炮弹自身会消失,从而形成整个坦克发射炮弹系统。

炮弹实例化部分代码: if (Muzzle) {GameObject muzzle = (GameObject)GameObject.Instantiate (Muzzle, missileposition, missilerotate);muzzle.transform.parent = this.transform; GameObject.Destroy (muzzle, MuzzleLifeTime); if (MissileOuter.Length > 0) {muzzle.transform.parent = MissileOuter [currentOuter].transform; } }8for (int i = 0; i < NumBullet; i++) { if (Missile) {Vector3 spread = new Vector3 (Random.Range (-Spread, Spread), Random.Range (-Spread, Spread), Random.Range (-Spread, Spread)) / 100;Vector3 direction = this.transform.forward + spread;GameObject bullet = (GameObject)Instantiate (Missile, missileposition, missilerotate); if (bullet.GetComponent<DamageBase> ()) {bullet.GetComponent<DamageBase> ().Owner = Owner; } if (bullet.GetComponent<WeaponBase> ()) {bullet.GetComponent<WeaponBase> ().Owner = Owner; bullet.GetComponent<WeaponBase> ().Target = target; } bullet.transform.forward = direction; if (RigidbodyProjectile) { if (bullet.rigidbody) {if (Owner != null && Owner.rigidbody) {bullet.rigidbody.velocity = Owner.rigidbody.velocity; }bullet.rigidbody.AddForce (direction * ForceShoot); } } } }2.2.3AI 实现1)首先我们设置的游戏中敌方坦克是在游戏开始后随机出现在游戏场景的中的随机位置,这就需要给当前的场景添加一个脚本,我们所采取的办法是在场景或者地形中添加一个cube ,并在这个cube 上绑定一个实现敌方坦克会自动出现的功能。

public GameObject ObjectSpawn; //自动出现的对象,可在面板中直接拖进 private float timeSpawnTemp = 0;//游戏的什么时间开始出现public float TimeSpawn = 20; //多长时间出现一个 public float ObjectCount = 0; //出现的数量public int TankAIScale = 20;//坦克的大小 public int Radiun;//出现的范围大小public int spawnerheight = 3;//掉落的高度在这段代码中我们先设置了几个静态的变量,是关于敌方坦克出现的数量,游戏的什么时候开始出现,每个多长时间出现一个,以及坦克的大小,坦克出现的范围和掉落的高度。

相关文档
最新文档