游戏开发实验报告

  • 格式:docx
  • 大小:17.66 KB
  • 文档页数:6

下载文档原格式

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

实验报告

课程名称:多媒体技术

实验题目:用Unity开发设计打靶游戏系别:计算机学院

专业:计算机科学与技术

班级:计科1303

学号:2013011204

姓名:赵雨阳

指导教师:申闫春

实验日期:2016年06月24日

一、实验目的:

通过本次实验使学生掌握用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<0){

xm=gameObject.Find("Main Camera").GetComponent("sheji").xmshu++;

sd=gameObject.Find("Main Camera").GetComponent("sheji").sdshu;

gameObject.Fine("wenzi").GetComponent(GUIText).text="射弹数: