这是一个简单的太空大战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 initialization
void Start ()
{
}
// Update is called once per frame
void 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 frame
void 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));
}
}
这样我们就可以移动飞船了,
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±