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);}}
只需将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
- Unity学习之路(一)太空大战类游戏制作3
- Unity学习之路(一)太空大战类游戏制作1
- Unity学习之路(一)太空大战类游戏制作2
- Unity学习之路(一)太空大战类游戏制作4
- Unity学习之路(一)太空大战类游戏制作5
- Unity入门游戏太空大战
- unity学习之飞机大战制作 关键点(一)
- WeaveSocket框架-Unity太空大战游戏-客户端-3
- WeaveSocket框架-Unity太空大战游戏-客户端-3
- Unity3D之太空大战一
- Unity3D之太空大战一
- WeaveSocket框架-Unity太空大战游戏-概述0
- WeaveSocket框架-Unity太空大战游戏-服务端-1
- WeaveSocket框架-Unity太空大战游戏-通信协议-2
- WeaveSocket框架-Unity太空大战游戏-概述0
- WeaveSocket框架-Unity太空大战游戏-服务端-1
- WeaveSocket框架-Unity太空大战游戏-通信协议-2
- 太空大战之太空滚动
- 关于报错“syntax error near unexpected token `”和回车换行
- C 语言格式化输出
- 160121总结
- [Coursera]数据结构基础_Week5_二叉树_Q1
- Android技巧1:启动屏+新功能左右导航
- Unity学习之路(一)太空大战类游戏制作3
- 【PSI/SI学习系列】2.PSI/SI深入学习1——预备知识
- A strange lift
- 我的 常犯错误
- leetcode之insertion Sort list
- 【PSI/SI学习系列】2.PSI/SI深入学习2——PSI信息解析(PAT,PMT,CAT)
- 关于notification的使用,setLatestEventInfo方法在新SDK不能使用的解决方法
- volatile关键字
- poj 2993 Emag eht htiw Em Pleh(关联2996)