游戏开发实验报告

实 验 报 告

课程名称: 多媒体技术

实验题目: 系 别: 专 业: 班 级: 学 号: 姓 名: 指导教师:

实验日期:

一、实验目的:

通过本次实验使学生掌握用Unity 开发射击打靶游戏的基本方法,学会在虚拟世界添加灯光、材质、刚体等物体对象,学会用Javascript 编写游戏程序,学会添加天空盒子、设置碰撞检测、发布游戏等编程能力。

二、实验要求:

1、开发出实验内容要求的程序。

2、写出上机实验报告,并写出自己调试程序的心得体会。

三、部分实验操作过程及源程序

1、首先在电脑上安装Unity3D ,这是本课程需要的游戏开发制作引擎。

2、接下来打开U3D 准备创建游戏工程。详细步骤如下

启动Unity ,双击桌面Unity ,Create New Project,(在D 盘建u3d01文件夹) ,Browse, 选D:\u3d01\sheji,Create,

!!! 去掉“check for updates”的对勾,单击skip new vertion,关闭welcome to unity。

3、在D 盘建u3d01文件夹。在层次面板,create,3d object,cube, 选中,F2改名,dimian,

创建地面:建立方体cube ,按F2键改名,为dimian ,按F 键聚焦显示物体,鼠标中轮放大缩小,按住平移,

把物体放到原点(0,0,0),用transform (位置)变换,直接输入0,0,0,或单击设置齿轮,选reset ,按F 键聚焦,

拉伸scale 成地面:改x100,y1,z100,按F 键聚焦,完成地面。

4、创建一个砖块,用于砌墙,按F2改名zhuankuai, 并且添加质量以及为场景添加灯光,在层次窗口创建源,对齐主摄像机,对齐视图,可以看齐砖块了,单击运行,看到砖块后选中砖块,添加刚体组件。之后块添加颜色或材质,选中物体,建立材质,材质可以赋给物体。

5、创建一个脚本之前,首先创建一个球体作为射弹,改名为:射弹,制成预制物体,可以重复使用。创建脚本赋给主摄像机作为射击用,改名叫sheji ,并编写第一个代码:功能是控制主摄像机在场景中移动,按W 键向前移动,按S 键向后移动,按A 键向左移动,按D 键向右移动,或同时让4个光标移动键同样有移动功能。

6、下是游戏所需要的代码。

#pragma strict

function Start() {

}

var speed : int =5;

var newobject:Transform;

function Update() {

var x:float =Input.GetAxis("Horizontal")*Time.deltaTime*speed; var z:float

=Input.GetAxis("Vertical")*Time.deltaTime*speed;

//移动功能

transform.Translate(x,0,z);

//print("shiji:"+x);

//开火功能

if(Input.GetButtonDown("Fire1")){

var n:Transform = Instantiate(newobject,transform.position,transform.rotation);

var fwd:Vector3 = transform.TransformDirection(Vector3.forward); // 加方向变量

n.rigidbody.AddForce(fwd*2800); //给物体加力

}

//旋转功能

if(Input.GetKey(KeyCode.Q)){ //向左

transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);//x,y,z,沿着物体自身轴旋转

}

if(Input.GetKey(KeyCode.E)){ //向右

transform.Rotate(0,25*Time.deltaTime,0,Space.Self);//x,y,z,自身面

}

}

销毁炮弹

#pragma strict

function Start() {

Destroy(gameObject,3.0);

}

发射炮弹

pragma strict

function Start() {

}

var speed : int =5;

var newobject:Transform;

function Update() {

var x:float =Input.GetAxis("Horizontal")*Time.deltaTime*speed; var z:float =Input.GetAxis("Vertical")*Time.deltaTime*speed;

transform.Translate(x,0,z);

//print("shiji:"+x);

if(Input.GetButtonDown("Fire1")){

var n:Transform = Instantiate(newobject,transform.position,transform.rotation);

var fwd:Vector3 = transform.TransformDirection(Vector3.forward); // 加方向变量

n.rigidbody.AddForce(fwd*28000); //给物体加力

}

}

//升高降低镜头

if(Input.GetKey(KeyCode.H)){ //向上

transform.Translate(0,5*Time.deltaTime,0); //x,y,z

}

if(Input.GetKey(KeyCode.N)){ //向下

transform.Translate(0,5*Time.deltaTime,0);//x,y,z

}

//旋转功能

if(Input.GetKey(KeyCode.Q)){ //向左

transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);//x,y,z,沿着物体自身轴旋转

}

if(Input.GetKey(KeyCode.E)){ //向右

transform.Rotate(0,25*Time.deltaTime,0,Space.Self);//x,y,z,自身面

}

if(Input.GetKey(KeyCode.Z)){ //向上

transform.Rotate(-25*Time.deltaTime,0,0,Space.Self);//x,y,z,沿着物体自身轴旋转

}

if(Input.GetKey(KeyCode.C)){ //向下

transform.Rotate(25*Time.deltaTime,0,0,Space.Self);//x,y,z,自身面

}

实现消灭计数

#pragma strict

var sd:int;

var xm:int;

function Update ( ) {

if(gameObjext.transform.position.y

xm=gameObject.Find("Main Camera").GetComponent("sheji").xmshu++; sd=gameObject.Find("Main Camera").GetComponent("sheji").sdshu; gameObject.Fine("wenzi").GetComponent(GUIText).text="射弹数:

"+sd+" 消灭数:"+xm;

//判断消灭数是否大于20

if(xm>20){

gameObject.Fine("wenzi").GetComponent(GUIText).text="恭喜过关! 继续努力!坚持学下去!";

gameObject.Find("Main

Camera").GetComponent("sheji").enabled=false; //把属性的对勾去掉,不起作用了

//gameObject.Find("dimian").GetComponent(dm).enabled=true; //把属性的对勾加上,该属性又起作用了,激活

}

Destroy(gameObject);

}

}

添加按钮

#pragma strict

var sd:int;

var xm:int;

function Update ( ) {

if(gameObjext.transform.position.y

xm=gameObject.Find("Main Camera").GetComponent("sheji").xmshu++; sd=gameObject.Find("Main Camera").GetComponent("sheji").sdshu; gameObject.Fine("wenzi").GetComponent(GUIText).text="射弹数:"+sd+" 消灭数:"+xm;

//判断消灭数是否大于20

if(xm>20){

gameObject.Fine("wenzi").GetComponent(GUIText).text="恭喜过关!继续努力!坚持学下去!";

gameObject.Find("Main

Camera").GetComponent("sheji").enabled=false; //把属性的对勾去掉,不起作用了

gameObject.Find("dimian").GetComponent(restart).enabled=true; //把属性的对勾加上,该属性又起作用了,激活

}

Destroy(gameObject);

}

}

7、在游戏中添加音乐,并设置循环播放。

8、发布游戏,并添加天空盒子。

9、把游戏开始见面场景和游戏连接到一起。

四、实验中的问题以及心得

要把源代码的场景名替换成自己设置的场景名否则两个场景无法连接到一起,通过这次实验我学会了通过U3D 制作一个最基本的射击游戏,以及U3D 这个程序应用的整体布局,对熟悉这个软件起到了非常大的作用。

实 验 报 告

课程名称: 多媒体技术

实验题目: 系 别: 专 业: 班 级: 学 号: 姓 名: 指导教师:

实验日期:

一、实验目的:

通过本次实验使学生掌握用Unity 开发射击打靶游戏的基本方法,学会在虚拟世界添加灯光、材质、刚体等物体对象,学会用Javascript 编写游戏程序,学会添加天空盒子、设置碰撞检测、发布游戏等编程能力。

二、实验要求:

1、开发出实验内容要求的程序。

2、写出上机实验报告,并写出自己调试程序的心得体会。

三、部分实验操作过程及源程序

1、首先在电脑上安装Unity3D ,这是本课程需要的游戏开发制作引擎。

2、接下来打开U3D 准备创建游戏工程。详细步骤如下

启动Unity ,双击桌面Unity ,Create New Project,(在D 盘建u3d01文件夹) ,Browse, 选D:\u3d01\sheji,Create,

!!! 去掉“check for updates”的对勾,单击skip new vertion,关闭welcome to unity。

3、在D 盘建u3d01文件夹。在层次面板,create,3d object,cube, 选中,F2改名,dimian,

创建地面:建立方体cube ,按F2键改名,为dimian ,按F 键聚焦显示物体,鼠标中轮放大缩小,按住平移,

把物体放到原点(0,0,0),用transform (位置)变换,直接输入0,0,0,或单击设置齿轮,选reset ,按F 键聚焦,

拉伸scale 成地面:改x100,y1,z100,按F 键聚焦,完成地面。

4、创建一个砖块,用于砌墙,按F2改名zhuankuai, 并且添加质量以及为场景添加灯光,在层次窗口创建源,对齐主摄像机,对齐视图,可以看齐砖块了,单击运行,看到砖块后选中砖块,添加刚体组件。之后块添加颜色或材质,选中物体,建立材质,材质可以赋给物体。

5、创建一个脚本之前,首先创建一个球体作为射弹,改名为:射弹,制成预制物体,可以重复使用。创建脚本赋给主摄像机作为射击用,改名叫sheji ,并编写第一个代码:功能是控制主摄像机在场景中移动,按W 键向前移动,按S 键向后移动,按A 键向左移动,按D 键向右移动,或同时让4个光标移动键同样有移动功能。

6、下是游戏所需要的代码。

#pragma strict

function Start() {

}

var speed : int =5;

var newobject:Transform;

function Update() {

var x:float =Input.GetAxis("Horizontal")*Time.deltaTime*speed; var z:float

=Input.GetAxis("Vertical")*Time.deltaTime*speed;

//移动功能

transform.Translate(x,0,z);

//print("shiji:"+x);

//开火功能

if(Input.GetButtonDown("Fire1")){

var n:Transform = Instantiate(newobject,transform.position,transform.rotation);

var fwd:Vector3 = transform.TransformDirection(Vector3.forward); // 加方向变量

n.rigidbody.AddForce(fwd*2800); //给物体加力

}

//旋转功能

if(Input.GetKey(KeyCode.Q)){ //向左

transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);//x,y,z,沿着物体自身轴旋转

}

if(Input.GetKey(KeyCode.E)){ //向右

transform.Rotate(0,25*Time.deltaTime,0,Space.Self);//x,y,z,自身面

}

}

销毁炮弹

#pragma strict

function Start() {

Destroy(gameObject,3.0);

}

发射炮弹

pragma strict

function Start() {

}

var speed : int =5;

var newobject:Transform;

function Update() {

var x:float =Input.GetAxis("Horizontal")*Time.deltaTime*speed; var z:float =Input.GetAxis("Vertical")*Time.deltaTime*speed;

transform.Translate(x,0,z);

//print("shiji:"+x);

if(Input.GetButtonDown("Fire1")){

var n:Transform = Instantiate(newobject,transform.position,transform.rotation);

var fwd:Vector3 = transform.TransformDirection(Vector3.forward); // 加方向变量

n.rigidbody.AddForce(fwd*28000); //给物体加力

}

}

//升高降低镜头

if(Input.GetKey(KeyCode.H)){ //向上

transform.Translate(0,5*Time.deltaTime,0); //x,y,z

}

if(Input.GetKey(KeyCode.N)){ //向下

transform.Translate(0,5*Time.deltaTime,0);//x,y,z

}

//旋转功能

if(Input.GetKey(KeyCode.Q)){ //向左

transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);//x,y,z,沿着物体自身轴旋转

}

if(Input.GetKey(KeyCode.E)){ //向右

transform.Rotate(0,25*Time.deltaTime,0,Space.Self);//x,y,z,自身面

}

if(Input.GetKey(KeyCode.Z)){ //向上

transform.Rotate(-25*Time.deltaTime,0,0,Space.Self);//x,y,z,沿着物体自身轴旋转

}

if(Input.GetKey(KeyCode.C)){ //向下

transform.Rotate(25*Time.deltaTime,0,0,Space.Self);//x,y,z,自身面

}

实现消灭计数

#pragma strict

var sd:int;

var xm:int;

function Update ( ) {

if(gameObjext.transform.position.y

xm=gameObject.Find("Main Camera").GetComponent("sheji").xmshu++; sd=gameObject.Find("Main Camera").GetComponent("sheji").sdshu; gameObject.Fine("wenzi").GetComponent(GUIText).text="射弹数:

"+sd+" 消灭数:"+xm;

//判断消灭数是否大于20

if(xm>20){

gameObject.Fine("wenzi").GetComponent(GUIText).text="恭喜过关! 继续努力!坚持学下去!";

gameObject.Find("Main

Camera").GetComponent("sheji").enabled=false; //把属性的对勾去掉,不起作用了

//gameObject.Find("dimian").GetComponent(dm).enabled=true; //把属性的对勾加上,该属性又起作用了,激活

}

Destroy(gameObject);

}

}

添加按钮

#pragma strict

var sd:int;

var xm:int;

function Update ( ) {

if(gameObjext.transform.position.y

xm=gameObject.Find("Main Camera").GetComponent("sheji").xmshu++; sd=gameObject.Find("Main Camera").GetComponent("sheji").sdshu; gameObject.Fine("wenzi").GetComponent(GUIText).text="射弹数:"+sd+" 消灭数:"+xm;

//判断消灭数是否大于20

if(xm>20){

gameObject.Fine("wenzi").GetComponent(GUIText).text="恭喜过关!继续努力!坚持学下去!";

gameObject.Find("Main

Camera").GetComponent("sheji").enabled=false; //把属性的对勾去掉,不起作用了

gameObject.Find("dimian").GetComponent(restart).enabled=true; //把属性的对勾加上,该属性又起作用了,激活

}

Destroy(gameObject);

}

}

7、在游戏中添加音乐,并设置循环播放。

8、发布游戏,并添加天空盒子。

9、把游戏开始见面场景和游戏连接到一起。

四、实验中的问题以及心得

要把源代码的场景名替换成自己设置的场景名否则两个场景无法连接到一起,通过这次实验我学会了通过U3D 制作一个最基本的射击游戏,以及U3D 这个程序应用的整体布局,对熟悉这个软件起到了非常大的作用。


相关内容

  • [JAVA游戏程序设计教程]实验任务书
  • <Java 游戏程序设计教程>实验任务书 实验一弹跳小球游戏设计 一实验目的 通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机制的基本原理,并掌握游戏运行框架的设计方法.二实验内容 学习和了解游戏基本框架的设计方法(参考教材第3章内容及相关代码),在此基础上设计 ...

  • 人工智能第三章井字棋实验报告
  • 实验报告 计算机科学学院工业中心204 实验室 二〇一六年六月二十三日 1.总体要求: 1.1总体功能要求: 利用不同的方法,实现人机对战过程中呈现出不同程度的智能特征: (1) 利用极大极小算法.α-β剪枝来提高算法的效率. (2) 使用高级语言,编写一个智能井字棋游戏. (3) 结合极大极小算法 ...

  • MFC开发拼图游戏实验报告
  • 计算机科学与工程学院 <Windows 程序设计>实验报告(四) <Windows 程序设计>实验报告 2 <Windows 程序设计>实验报告 3 <Windows 程序设计>实验报告 4 <Windows 程序设计>实验报告 5 < ...

  • 7猜数字游戏课程设计完整版
  • 北京邮电大学世纪学院 实验.实习.课程设计报告撰写格式与要求 (试行) 一.实验报告格式要求 1.有实验教学手册,按手册要求填写,若无则采用统一实验报告封面. 2.报告一律用钢笔书写或打印,打印要求用A4纸:页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米:行间距取固定值(设置值为2 ...

  • 手机游戏设计与开发-T0201-0
  • 编号:JX/GC7.3.1-02-JL01 <手机游戏设计与开发>课程标准 学分:4学分 参考学时:72学时 一.课程概述 <手机游戏设计与开发>是嵌入式技术与应用专业的专业限选课程.本课程的先修课程包括<C 程序设计>.<C++程序设计>.<嵌 ...

  • 结题报告目录
  • <"快乐课间小游戏"校本课程开发与实践研究>结题报告 目 录 一.课题研究的背景及意义 二.课题的界定及国内外关于同类课题的研究 (一)课题的界定 (二)国内外关于同类课题的研究 三.课题的理论依据 (一)课程论依据 (二)加德纳的多元智能理论依据 (三)加涅的结构观 ...

  • ERP经营分析报告
  • ERP沙盘模拟经营分析报告 2010-12-21 院系:经贸院.经贸系 班级:国贸07级⑵班 组员:罗小欢[CEO] 周娟[生产] 邵甜[CFO] 刘银见[财助] 马健[采购] 杨玉良[销售] ERP沙盘模拟实验经营分析报告 四天的学习与实践,我认识到ERP沙盘模拟实验是一种理论与实践紧密结合的课程 ...

  • 实验报告封面
  • 太原理工大学 大学计算机基础 课程 实验报告 专业班级 ********* 学 号 ********* 姓 名 ******* 指导教师 任少斌 太原理工大学现代科技学院实验报告 jīnshānruǎnjiànshìzhōngguózuìzhīmíngderuǎnjiànqǐyèzhīyī 金山软件 ...

  • "体育赤足教学的研究"课题结题报告
  • "体育赤足教学的研究"课题结题报告 执笔:宜昌市西陵区外国语实验小学课题组 赵艳青 一.课题研究的背景 中医脉络学理论历史渊远流长,内容博大精深,是中华民族的文化精华,是世界文明的宝贵财富.中医学认为,经络在人体内有运行气血,沟通内外,联络脏腑,贯穿上下的作用.经络学说的形成与四 ...