Android Unity3D游戏开发之躲避方块(附源码)

bull 2011-10-25

开发环境

Window 7

Unity3D 3.4

MB525 defy  Android 2.1-update1

这次给大家送上自己初学Unity时写的一个小游戏Demo,我叫它“躲避方块”,其实这个游戏可以无限扩展,可以做成联机游戏,加入更多游戏元素等,我是心有余而力不足,公司想做个类似《火炬之光》的游戏,自己要好好努力才行,这也许是自己开发的第一个完全作品。就在上个星期,Unity升级到了3.4,功能有了质的飞跃,不仅游戏大小缩小一圈(我这游戏看不出来- -),开发也更加开放,移动端能用的功能更多,新的3.4Demo就是我的目标,手机游戏就是要这样的画面效果-0- 话说最近打了一款叫《爱丽丝疯狂回归》的游戏,EA再次让我感觉到了无所不能,游戏做得十分精致,虽然血型十足,但绚丽的画面下形成强烈的对比,就是游戏性可能略显单薄,但是款难得一见的佳作,推荐给大家,每个人心中都有个仙境,至少我们的仙境曾经美丽过~ ~

本文工程代码下载地址: 

下载在安科网的1号FTP服务器里,下载地址:

密码:www.muu.cc

下载方法见 http://www.linuxidc.net/thread-1187-1-1.html

本次学习:

1.开发准备

2.制作简介

3.小技巧

1.开发准备

       这个游戏代码其实很简单,羽化也没想到要写成个游戏,在看Unity脚本文档的时候练习那些脚本,慢慢的就写成了这个小游戏,大家若有什么不懂的脚本可以看看脚本文档,上面写得很详细,还有就是升级成Unity3.4以后.NET一定要到3.5,要不让脚步编辑器Monodevelop打不开。还有就是游戏是两个Scene组成,在自己做的时候一定要在Buid Settings里面排序,详细可以看我的游戏代码。Unity的强大之处在于对游戏的优化,Occlusion Culling技术使我们场景可以很更大,减少了游戏的大小,大家可以研究下这些开发技巧~ ~ 

Android Unity3D游戏开发之躲避方块(附源码)

 

2.制作简介

还是和原来一样,主要是介绍一下重要的几个脚本,每个人开发习惯不一样,所以这里就不详细写到底怎么做的了,代码全部送上,写几个对开发重要的脚本,希望对大家有帮助。

首先是触摸脚本怎么写,因为触摸是目前手机唯一的操作方式,这个很重要,就那自己写的几个脚本介绍下,看看这个脚本Menu_New,这是一个实现新的游戏的脚本详细代码如下:

  1. function Update()  
  2. {  
  3.     for (var touch : Touch in Input.touches)  
  4.     {  
  5.       
  6.         if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(0).phase == TouchPhase.Began)  
  7.         {  
  8.             if(touch.position.x>90 && touch.position.x<540 && touch.position.y>250 && touch.position.y<400)  
  9.             {  
  10.                 renderer.material.color = Color.red;  
  11.             }  
  12.             else  
  13.             {  
  14.                 renderer.material.color = Color.white;  
  15.             }  
  16.         }  
  17.         else if (touch.phase == TouchPhase.Ended )  
  18.         {  
  19.             if(touch.position.x>90 && touch.position.x<540 && touch.position.y>250 && touch.position.y<400)  
  20.             {  
  21.                 renderer.material.color = Color.red;  
  22.                 Application.LoadLevel(1);  
  23.             }  
  24.         }  
  25.         else  
  26.         {  
  27.             if(touch.position.x>90 && touch.position.x<540 && touch.position.y>250 && touch.position.y<400)  
  28.             {  
  29.                 renderer.material.color = Color.red;  
  30.             }  
  31.             else  
  32.             {  
  33.                 renderer.material.color = Color.white;  
  34.             }  
  35.         }  
  36.     }  
  37. }  

这里可以看到Input是获取触摸的接口,从Input中可以获取触摸个数,触摸状态,包括很多感应器,甚至还能确定第几个点的触摸,羽化自我认为这个很方便,原来开发Android游戏的时候,做个多点触摸判断都很麻烦,Unity使这一下子简单不少,详细使用方法可以看脚本手册里面介绍,还有就是Scene的跳转用Application,退出也是一样,Application也是很使用的接口。 大家看到羽化把坐标写死其实是不对的,应该写成相对坐标,这里不要忘了,羽化也是为了方便-0-

下一个我们看看触发器的脚本,很多人都搞不清楚触发器和碰撞器到底有什么区别,羽化可以这么解释,触发器是个虚的东西,被勾成触发器的物体实质上就相当于没了实体,而碰撞器肯定是实的东西,用脚本里面的理解来说,无论是触发器还是碰撞器,都是由刚体引起的,所以必须两个物体中必须有一个是刚体。看看这个脚本Trigger:

  1. collider.isTrigger = true;  
  2. var explosionPrefab : Transform;  
  3. // Destroy everything that enters the trigger   
  4. function OnTriggerEnter (other : Collider) {  
  5.  if(other.gameObject.tag == "Player")  
  6.  {  
  7.   Destroy(other.gameObject);  
  8.   Destroy(gameObject);  
  9.   Instantiate(explosionPrefab, transform.position,Quaternion.identity);  
  10.   Begin.hasOne = true;  
  11.   Begin.life --;  
  12.   GameObject.Find("Life") .guiText.text = Begin.life + "";  
  13.  }  
  14. }  

这个脚本是让火球或者雷球相互触发的时候不会自己爆炸,因为速度是越来越快,所以总会有碰到的时候。

相关推荐