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));}}这样我们就可以移动飞船了,
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
- Unity3D之太空大战一
- Unity3D之太空大战一
- Unity3D之太空大战二
- Unity3D之太空大战二
- 太空大战之太空滚动
- Unity3D 太空大战——整理
- 太空大战之技术点分析 技术
- Unity学习之路(一)太空大战类游戏制作1
- Unity学习之路(一)太空大战类游戏制作2
- Unity学习之路(一)太空大战类游戏制作3
- Unity学习之路(一)太空大战类游戏制作4
- Unity学习之路(一)太空大战类游戏制作5
- Unity3D【火星大战一】
- SpaceShootGame(太空大战)
- 太空大战1.0
- Unity3D项目之《坦克大战》
- Unity入门游戏太空大战
- Unity3d之坦克大战(二)
- coach outlet stores-403
- louis vuitton outlet store-717
- rayban sunglasses on sale-564
- 这是需要友元函数
- ibatis的dtd文件头修改 标签提示
- Unity3D之太空大战一
- Android中常用的adb命令
- MFC 应用程序框架-程序入口和执行流程
- Linux内核的同步机制
- OGRE引擎优化的几点建议
- opencv 基本操作-图片大小的缩放
- 【Cocos2d-x 3.0】游戏开发之android交叉编译
- VC6.0设定UNICODE编译环境
- HDU 1856 More is better 并查集