Unity3D之太空大战一

来源:互联网 发布:2017优化设计语文答案 编辑:程序博客网 时间:2024/04/28 09:26

这是一个简单的太空大战DEMO,整个游戏两个部分,开始游戏界面跟游戏主界面,敌人分为两种,一种是简单的敌人,只会去触碰主角,还有一种是复杂点的敌人,可以发射子弹,,OK,下面我们一步步来。

首页我们导入相关的资源,在Assets里单击弹出选择框,选择Import Package->Custom Package,如下图:



接下来,我们要创建一个开始游戏场景,点击菜单栏中的File->New Scene来创建一个新场景,我们命名为start,如下图:



开始场景很简单,它包含一个标题,一个开始游戏按钮,一张背景图,我们先点击菜单栏,GameObject->Create Other->GUI Texture,创建一个背景图,如下图:



我们命名为GameBg,并在Texture里选择mars.png为背景图,如下图:




OK,接下来,我们在代码里创建标题,按钮,我们创建一个CS脚本,命名为TitleScreen,代码如下图:

using UnityEngine;using System.Collections;[AddComponentMenu("MyGame/TitleScreen")]public class TitleScreen : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}void OnGUI(){GUI.skin.label.fontSize=80;GUI.skin.label.alignment=TextAnchor.LowerCenter;GUI.Label(new Rect(0,30*2,Screen.width,100),"太空大战");if(GUI.Button(new Rect(Screen.width*0.5f-100*2,Screen.height*0.6f,200*2,30*2),"开始游戏")){//读取当前关卡Application.LoadLevel("Level1");}}}

这样,我们就创建了一个标题,跟一个按钮,并且点击按钮的时候,我们会跳转到下一个场景,我们把脚本挂到摄像机上,效果如下图:



接下来我们创建第二个场景,步骤跟上面新建第一个场景一样,我们命名为Level1,我们新建一个Plane,作为火星的模型,如下图:



命名为XqPlane,然后我们新建一个材质,命名为Background,如下图:



选择mars.png作为贴图,将shader属性设置为Transparent->Cutout->Diffuse,来去掉星球四周的黑框,材质属性如下图:




然后我们为火星模型指定材质,如下图:



同样,我们创建一个星空的模型,跟前面创建星球一样,我们命名为XkPlane,材质属性,贴图,如下图:




运行,我们看下效果图:



现在星空是不动的,我们想让它上下移动,所以接下来,我们创建动画,我们点击菜单栏Window->Animation,打开动画选项,



然后在Animation选项里点击Add Curve创建一个新动画,并命名为XkAnimation,如下图:



然后我们点击Mesh Renderer->Material._Main Tex_ST选项,如下图:



然后我们在Material._Main Tex_ST.w里将值从0到-1,到30帧的时候,改为-1,并设置循环,如下图:


运行发现,星空背景在往下移动,接下来,我们调整摄像机位置,使其向下对准星球,然后我们创建一个点光源,来照亮星球,,如下图:



然后我们设置光源的位置,范围等属性,属性如下图:





接下来,我们就要创建主角啦。。。。我们的主角是一艘太空飞船,我们可以通过方向键来控制飞船移动,我们将Player.fbx直接拖到Hierarchy中,然后将Y轴坐标为0,并且旋转180°,使其头朝上,如下图:




然后我们创建一个cs脚本,命名为Player,代码如下:

public class Player : MonoBehaviour {public float m_speed=1;protected Transform m_transform;void Start () {m_transform=this.transform;}// Update is called once per framevoid Update () {////纵向移动距离//float movev=0;////横向移动距离//float moveh=0;//////向上键//if(Input.GetKey(KeyCode.UpArrow))//{//////movev-=m_speed*Time.deltaTime;//////}////向下键//if(Input.GetKey(KeyCode.DownArrow))//{//////movev+=m_speed*Time.deltaTime;//////}////if(Input.GetKey(KeyCode.LeftArrow))//{//////moveh+=m_speed*Time.deltaTime;//////}//if(Input.GetKey(KeyCode.RightArrow))//{//////moveh-=m_speed*Time.deltaTime;//////}//this.m_transform.Translate(new Vector3(moveh,0,movev));}}
这样我们就可以移动飞船了,



±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±


2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电视主板坏了怎么办 面包车电量亏电怎么办 自动挡汽车亏电怎么办 自动挡亏电了怎么办 面包车打不起火怎么办 汽车电瓶亏电怎么办 小车电池没电怎么办 汽车电瓶有电打不着火怎么办 汽车电瓶没电打不着火怎么办 汽车电池没电打不着火怎么办 汽车电瓶亏电打不着火怎么办 自动挡电瓶没电打不着火怎么办 自动挡车子没电打不着火怎么办 自动挡汽车没电打不着火怎么办 自动挡汽车有电打不着火怎么办 p0846骐达故障怎么办 汽车冷却液漏了怎么办 冷却液管子漏了怎么办 电脑网络不可用怎么办 手表带子坏了怎么办 这几天生意不好怎么办 大学不想住宿舍怎么办 在北京买车后被骗怎么办 联通套餐不到期怎么办 联通全国流量包怎么办 缤智车钥匙丢了怎么办 车遮阳板松了怎么办 洗车把内饰划了怎么办 新车销售没销量怎么办 住院时间重叠了怎么办 长安cs75油耗高怎么办 墙内线烧了怎么办 如果没买票想进高铁站怎么办 老赖拒绝还款怎么办 gta5资产不兼容怎么办 平板黑屏闪退怎么办 施工证学历不够怎么办 隧道放炮声大怎么办 58工作被骗了怎么办 学历国家不承认怎么办 福州居住证一年到期怎么办