Android Unity3D游戏开发之躲避方块

15 篇文章 0 订阅
4 篇文章 0 订阅

开发环境

Window 7

Unity3D 3.4

MB525 defy  Android 2.1-update1

 

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

 

本次学习:

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 + "";
 }
}

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

         最后给大家看看Begin这个脚本,因为这个脚本是所有的核心,里面可以学习下寻找gameObject,和产生预设的方法,预设的作用十分广泛,相当于一个强大的脚本集合器,而且生成与销毁都能用脚本控制。

var prefab : Transform;
static var hasOne = true;
static var life = 3;
static var GameOver = false;

function Awake()
{
	hasOne = true;
	life = 3;
	GameOver = false;
	GameObject.Find("Life") .guiText.text = life + "";
	GameObject.Find("GameOver").renderer.enabled = false;
}

function Update () {
	for (var i = 0; i < Input.touchCount; ++i) 
	{
		if (Input.GetTouch(i).phase == TouchPhase.Began && hasOne && !Return.isReturn) 
		{
			Instantiate(prefab, transform.position, transform.rotation);
		}
	}
	
	if(life ==0)
	{
		hasOne = false;
		GameOver = true;
		GameObject.Find("GameOver").renderer.enabled = true;
		Relay();
	}
}

function Relay()
{
	yield WaitForSeconds (3);
	GameObject.Find("Replay").guiText.text = "Touch To Replay!";
	GameObject.Find("Replay").guiText.fontSize = 40;
}

      游戏中爆炸特效和跟随路径都是自带的,这里羽化只是修改了下样式,话说这路径回来的时候一闪像激光一样,烘托点氛围吧。

 

 

3.小技巧

        Unity开发中有个东西叫做Unity Remote,可能很多人都不知道,其实是个很强大的软件,下载地址是https://market.android.com/details?id=com.unity3d,大家可以下载下来看看这东西到底给我们开发带来多大方便~ ~

        还有最近才发现更换开始图标的方法在Player Settings的Splash Image里面-0- 原来找半天没找到。。。

        可能有些人不知道Unity生成Android的那些项目到底在哪,其实当你生成一次APK后这些东西自动生成在Project目录下的Temp文件夹里面,有兴趣可以研究下~ ~

        最后告诉大家一个秘密,其实获取键盘按键的“Enter”对应的键值是“Return” - - 估计很多人会搞错。。。 

 

一下子就想到这些,写的比较简单,有什么不懂的可以跟羽化留言,也可以这Unity圣典的QQ2群里面问,羽化会的一定会回答。这个星期Stray为自己的誓言要开始冲85的征程了,真想再见你一面。

 

代码下载地址: 

http://download.csdn.net/source/3486987


下集预告:

Unity如何使用Java类

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值