Unity 3D之第一个游戏

本文将引导你通过Unity3D进行游戏开发的基础操作,从创建项目开始,构建3D游戏世界,添加游戏对象模型,并通过脚本控制其移动与旋转。接着,介绍如何给游戏对象添加刚体,实现物理碰撞效果。最后展示运行游戏的界面。此教程旨在帮助初学者理解Unity3D游戏开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是第一个游戏,目的是让大家了解整个Unity3D游戏开发过程。下面我们开始操作:

1.创建一个Unity3D项目

选择菜单栏中的“File-->NewProject”菜单项,然后在弹出界面中选择“CreatenewProject”页面,将项目名字命名为“SynthesizeExample,再点击“CreateProject”完成项目的建立。

视图如下:

2.构建3D游戏世界中的基本模型

Hierarchy视图中分别创建游戏对象模型:平面(Plane)、立方体(Cube)、球体(Sphere)、圆柱体(Cylinder)和胶囊体(Capsule),然后使用变换工具栏将它们摆放在合适的位置。

然后选择“Create-->Directionallight”菜单项。完成3D

游戏世界中游戏对象模型的构建,视图如下:

3.使用脚本控制游戏对象模型的移动与旋转

在“Project”视图中点击“Create-->JavaScript”菜单项来创建一条游戏脚本,将其命名为SynthesizeExample.js,在该脚本中编写一段代码,代码如下:

Js代码 复制代码 收藏代码
  1.   #pragmastrict
  2.   
  3.   //游戏对象模型移动速度
  4.   varTranslateSpeed=20;
  5.   //游戏对象模型旋转速度
  6.   varRotateSpeed=1000;
  7.   
  8.   //绘制GUI界面
  9.   functionOnGUI(){
  10.   //设置GUI背景色
  11.   GUI.backgroundColor=Color.red;
  12.   
  13.   if(GUI.Button(Rect(10,10,70,30),"向左旋转")){
  14.   //游戏对象模型向左旋转
  15.   transform.Rotate(Vector3.up*Time.deltaTime*(-RotateSpeed));
  16.   }
  17.   if(GUI.Button(Rect(90,10,70,30),"向右旋转")){
  18.   //游戏对象模型向右旋转
  19.   transform.Rotate(Vector3.up*Time.deltaTime*RotateSpeed);
  20.   }
  21.   
  22.   if(GUI.Button(Rect(10,50,70,30),"向前移动")){
  23.   //游戏对象模型向前移动
  24.   transform.Translate(Vector3.forward*Time.deltaTime*TranslateSpeed);
  25.   }
  26.   if(GUI.Button(Rect(90,50,70,30),"向后移动")){
  27.   //游戏对象模型向后移动
  28.   transform.Translate(Vector3.forward*Time.deltaTime*(-TranslateSpeed));
  29.   }
  30.   
  31.   if(GUI.Button(Rect(10,90,70,30),"向左移动")){
  32.   //游戏对象模型向左移动
  33.   transform.Translate(Vector3.left*Time.deltaTime*TranslateSpeed);
  34.   }
  35.   if(GUI.Button(Rect(90,90,70,30),"向右移动")){
  36.   //游戏对象模型向右移动
  37.   transform.Translate(Vector3.right*Time.deltaTime*TranslateSpeed);
  38.   }
  39.   
  40.   //显示游戏对象模型的位置信息
  41.   GUI.Label(Rect(170,10,200,30),"游戏对象模型的位置:"+transform.position);
  42.   //显示游戏对象模型旋转的信息
  43.   GUI.Label(Rect(170,500,200,30),"游戏对象模型的旋转:"+transform.rotation);
  44.   
  45.   }
  #pragma strict
  
  //游戏对象模型移动速度
  var TranslateSpeed = 20;
  //游戏对象模型旋转速度
  var RotateSpeed = 1000;
  
  //绘制GUI界面
  function OnGUI () {
  	//设置GUI背景色
  	GUI.backgroundColor = Color.red;
  	
  	if(GUI.Button(Rect(10,10,70,30),"向左旋转")){
  		//游戏对象模型向左旋转
  		transform.Rotate(Vector3.up * Time.deltaTime * (-RotateSpeed));
  	}
  	if(GUI.Button(Rect(90,10,70,30),"向右旋转")){
  		//游戏对象模型向右旋转
  		transform.Rotate(Vector3.up * Time.deltaTime * RotateSpeed);
  	}
  	
  	if(GUI.Button(Rect(10,50,70,30),"向前移动")){
  		//游戏对象模型向前移动
  		transform.Translate(Vector3.forward * Time.deltaTime * TranslateSpeed);
  	}
  	if(GUI.Button(Rect(90,50,70,30),"向后移动")){
  		//游戏对象模型向后移动
  		transform.Translate(Vector3.forward * Time.deltaTime * (-TranslateSpeed));
  	}
  	
  	if(GUI.Button(Rect(10,90,70,30),"向左移动")){
  		//游戏对象模型向左移动
  		transform.Translate(Vector3.left * Time.deltaTime * TranslateSpeed);
  	}
  	if(GUI.Button(Rect(90,90,70,30),"向右移动")){
  		//游戏对象模型向右移动
  		transform.Translate(Vector3.right * Time.deltaTime * TranslateSpeed);
  	}
  	
  	//显示游戏对象模型的位置信息
  	GUI.Label(Rect(170,10,200,30),"游戏对象模型的位置:"+transform.position);
  	//显示游戏对象模型旋转的信息
  	GUI.Label(Rect(170,500,200,30),"游戏对象模型的旋转:"+transform.rotation);
  	
  }

上述代码中涉及的方法和属性如下所示:

1.1OnGUI():此方法用于绘制GUI界面组件。

1.2GUI.Button():此方法设置一个按钮,返回true时表示该按钮被按下,执行if中的语句

1.3GUI.Label():此方法设置一个文本标签。

1.4transform:为当前绑定游戏对象模型的变换对象。

1.5transform.Rotate():设置游戏对象模型旋转的方法。

1.6transform.Translate():设置游戏对象模型平移的方法。

1.7Time.deltaTime:该数值为一个只读属性,不可修改,表示完成最后一帧的时间,单位为秒

1.8Vector3:标志一个游戏对象模型移动或旋转的方向。

1.9Rect:规定一个矩形区域,用于显示控件。

将上述脚本对象绑定到立方体(Cube)游戏对象上。

4.给游戏对象模型添加刚体

在未给游戏对象添加刚体之前,立方体(Cube)游戏对象与其他的游戏对象之间发生碰撞时,不会产生碰撞效果,而是直接穿过另外的游戏对象。如果想让游戏对象模型之间具有物体的碰撞,需要给游戏对象模型添加一个刚体(Rigidbody)属性。添加方法很简单,首先在Hierarchy视图中选中立方体(Cube),在Unity导航菜单栏中选择“Component-->Physics-->Rigidbody”菜单项即可。

<!--EndFragment-->



刚体与Unity物理引擎是紧密结合的;我们给游戏对象模型添加刚体后,那么该游戏对象模型就拥有了游戏物理引擎,使其可以感应物理的碰撞效果。

运行游戏后的界面如下所示:

<!--EndFragment-->

原文链接:http://convolute.iteye.com/blog/1858728

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值