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

来源:互联网 发布:ios webview内存优化 编辑:程序博客网 时间:2024/04/28 16:25

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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 审稿人让引用他的文章怎么办 考二建未从事该行业满两年怎么办 2档换3档离合器怎么办 高铁车票丢了怎么办 事业编制调动原单位不同意怎么办 想去铁路上工作怎么办 房产权50年以后怎么办 在香港手机没电怎么办 学校官网登陆忘记密码怎么办 网上申报学校忘记密码怎么办 专转本想换专业怎么办 发生工伤没有平均公资怎么办? 单招过了不想去怎么办 22岁了还想复读怎么办 父母不让我读大专了怎么办 专升本考试失利怎么办 高考复读一年后失败了怎么办? 医保住院超过30万怎么办 北京医保超过2万怎么办 工伤公司垫付医疗费没法报销怎么办 司法考试照片耳朵露不出来怎么办 新华社毕业证照片用光了怎么办 农村父母投靠落户社保怎么办 退休后投靠父母户口怎么办 要离婚想儿子了怎么办 怀孕期间离婚了孩子户口怎么办 常州武进区怎么办居住证明 跟老公离婚了户口怎么办 离婚了不给户口怎么办 父母不给户口本迁户口怎么办 产能置换的煤矿职工怎么办 如果是单位集体户小孩读书怎么办 异地防疫不给打怎么办? 青岛市办理大龄就业困难补贴怎么办 就业登记证掉了怎么办 就业信息填错了怎么办 小孩入学父母无单位怎么办 和公婆住一起很压抑怎么办 不想和公婆一起住怎么办 在家啃老三年了怎么办 新时代卫计工作怎么办