Android Unity3D游戏开发之躲避方块(附源码)
开发环境
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技术使我们场景可以很更大,减少了游戏的大小,大家可以研究下这些开发技巧~ ~
2.制作简介
还是和原来一样,主要是介绍一下重要的几个脚本,每个人开发习惯不一样,所以这里就不详细写到底怎么做的了,代码全部送上,写几个对开发重要的脚本,希望对大家有帮助。
首先是触摸脚本怎么写,因为触摸是目前手机唯一的操作方式,这个很重要,就那自己写的几个脚本介绍下,看看这个脚本Menu_New,这是一个实现新的游戏的脚本详细代码如下:
- function Update()
- {
- for (var touch : Touch in Input.touches)
- {
- if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(0).phase == TouchPhase.Began)
- {
- if(touch.position.x>90 && touch.position.x<540 && touch.position.y>250 && touch.position.y<400)
- {
- renderer.material.color = Color.red;
- }
- else
- {
- renderer.material.color = Color.white;
- }
- }
- else if (touch.phase == TouchPhase.Ended )
- {
- if(touch.position.x>90 && touch.position.x<540 && touch.position.y>250 && touch.position.y<400)
- {
- renderer.material.color = Color.red;
- Application.LoadLevel(1);
- }
- }
- else
- {
- if(touch.position.x>90 && touch.position.x<540 && touch.position.y>250 && touch.position.y<400)
- {
- renderer.material.color = Color.red;
- }
- else
- {
- renderer.material.color = Color.white;
- }
- }
- }
- }
这里可以看到Input是获取触摸的接口,从Input中可以获取触摸个数,触摸状态,包括很多感应器,甚至还能确定第几个点的触摸,羽化自我认为这个很方便,原来开发Android游戏的时候,做个多点触摸判断都很麻烦,Unity使这一下子简单不少,详细使用方法可以看脚本手册里面介绍,还有就是Scene的跳转用Application,退出也是一样,Application也是很使用的接口。 大家看到羽化把坐标写死其实是不对的,应该写成相对坐标,这里不要忘了,羽化也是为了方便-0-
下一个我们看看触发器的脚本,很多人都搞不清楚触发器和碰撞器到底有什么区别,羽化可以这么解释,触发器是个虚的东西,被勾成触发器的物体实质上就相当于没了实体,而碰撞器肯定是实的东西,用脚本里面的理解来说,无论是触发器还是碰撞器,都是由刚体引起的,所以必须两个物体中必须有一个是刚体。看看这个脚本Trigger:
- collider.isTrigger = true;
- var explosionPrefab : Transform;
- // Destroy everything that enters the trigger
- function OnTriggerEnter (other : Collider) {
- if(other.gameObject.tag == "Player")
- {
- Destroy(other.gameObject);
- Destroy(gameObject);
- Instantiate(explosionPrefab, transform.position,Quaternion.identity);
- Begin.hasOne = true;
- Begin.life --;
- GameObject.Find("Life") .guiText.text = Begin.life + "";
- }
- }
这个脚本是让火球或者雷球相互触发的时候不会自己爆炸,因为速度是越来越快,所以总会有碰到的时候。