您的位置:首页 > 移动开发 > Unity3D

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

2016-01-24 23:39 465 查看
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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: