Unity学习之路(一)太空大战类游戏制作3

1. 调用爆炸效果

再拖一个精灵到层次面板,命名为explosionPlayer。把爆炸代码赋给它,并把FrameNumber改成5


把两个爆炸效果存为预置物体精灵,并删掉层次面板中的爆炸效果。

取消MeshRenderer中的投射阴影和接收阴影


修改陨石的代码,添加变量并将OnTriggerEnter修改如下。

var explosionEnemy_b1:GameObject;
var explosionPlayer_b1:GameObject;

function OnTriggerEnter(other:Collider){
	if(other.tag=="projectile"){
		Instantiate(explosionEnemy_b1,transform.position,transform.rotation);
		transform.position=new Vector3(Random.Range(-2.6,2.6),3.5,0);
		Destroy(other.gameObject);
		
		}
	if(other.tag=="Player")
	{
		Instantiate(explosionPlayer_b1,transform.position,transform.rotation);
		transform.position=new Vector3(Random.Range(-2.6,2.6),3.5,0);
		}
		
}



2. 升级武器系统

只需将PlayerController脚本修改为:

var speed:float=3.0;
var projectile_bl:GameObject;
var z:GameObject;
var y:GameObject;
function Update () {
	if(transform.position.x>-3.1 && transform.position.x<3.1){
		transform.Translate(speed*Input.GetAxis("Horizontal")*Time.deltaTime,0,0);}
	else if(transform.position.x<-3.1){transform.position.x=3.0;}
	else if(transform.position.x>3.1){transform.position.x=-3.0;}

	if(Input.GetKeyDown(KeyCode.Space)){
		Instantiate(projectile_bl,transform.position,transform.rotation);
		z=Instantiate(projectile_bl,transform.position,transform.rotation);
		y=Instantiate(projectile_bl,transform.position,transform.rotation);
		z.transform.Rotate(0,0,30);
		y.transform.Rotate(0,0,-30);
		}
}


3.实现计分与显示功能

修改RockController脚本。

申请变量:

static var score:int=0;
static var lives:int=3;

若击中炮弹,则score+=100;若和玩家碰撞,lives--;


添加OnGUI函数:

function OnGUI(){
	GUI.Label(new Rect(10,10,120,20),"score:"+score.ToString());
	GUI.Label(new Rect(10,30,60,20),"lives:"+lives.ToString());
	}

解释:例如第一行,new Rect绘制标签的位置,离左边10元素,离上边10元素,宽度120,高度20,标签上显示score,ToString把它变成字符串。


4.倒计时个性化图片显示

添加timeRemainDisplay脚本。

var timeNumbers:Texture[];//申请图片数组,存放图片
static var leftTime:int=100;//剩余时间,初始值100秒
var myTime:float=0;//计时用

function Update () {
	myTime+=Time.deltaTime;
	if(myTime>1){//知道它增加到一秒的时候,开始倒计时
		leftTime--;
		myTime=0;//清零,重新计时下一个一秒
	}
	if(leftTime<1.0)
		leftTime=0;
}

function OnGUI(){
	for(var i:int=0;i<leftTime.ToString().Length;i++){
<span style="white-space:pre">		</span>//在屏幕什么位置显示图片,画一个矩形来显示图片。
		GUI.DrawTexture(new Rect(350+i*32,20,32,45),timeNumbers[System.Int32.Parse((leftTime.ToString())[i].ToString())]);
	}
}
System.Int32.Parse把数字的字符串类型转换为数值型。leftTime.ToString把剩余时间转换为字符串


5.背景音乐和开始场景

将背景音乐文件拖到主摄像机上并设置音量和循环播放即可。


新建场景,存为start。创建startController脚本,拖到相机上。

private var intext:String="Instruction:\n\n Press left and right arrow to move . \n Press Space to fire.";//游戏玩法显示
var startTexture:Texture;

function OnGUI(){
	GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),startTexture);//满屏显示在窗口里
	GUI.Label(new Rect(10,10,250,200),intext);
	if(Input.anyKeyDown)
		Application.LoadLevel("level");
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值