【Unity3D】【小游戏】打砖块

记录学习过程

录)

Unity3D小游戏打砖块

Unity版本:2018.3.0f2

源码:https://github.com/GreAmbWang/Unity

简介:在游戏中可以通过键盘的移动视角,通过鼠标左右键发射子弹,还可以通过点击滑轮释放大招,子弹可以击倒砖块

一,新建项目

在Assets中新建一个Materials存放材质,新建一个Prefabs存放预制体,新建一个Script存放脚本
【Unity3D】【小游戏】打砖块

二,新建地板

在场景中新建一个地板Panel改名为Ground,适当地修改地板的颜色,将Ground的Position设置为(0,0,0),在Materials文件夹中新建一个材质用于地板
【Unity3D】【小游戏】打砖块
地板:

【Unity3D】【小游戏】打砖块

三,预制体,砖块和子弹

在场景中分别新建一个Cube(砖块)和一个Sphere(子弹),把它们都拖进Prefabs文件夹,都添加一个Rigidbody组件(刚体)
【Unity3D】【小游戏】打砖块

可以修改子弹的Scale,这样更像一个子弹
【Unity3D】【小游戏】打砖块

四,添加墙体脚本

在Script文件夹中新建一个C#脚本Wall,用于新建墙体(做个程序员,不用搬砖了 )

/// <summary>
/// 墙体
/// </summary>
public class Wall : MonoBehaviour
{
    /// <summary>
    /// 砖块横向个数
    /// </summary>
    int width = 50;
    /// <summary>
    /// 砖块竖向个数
    /// </summary>
    int height = 10;
    /// <summary>
    /// 砖块
    /// </summary>
    public GameObject prefab;

    /// <summary>
    /// 创建一个墙体
    /// </summary>
    /// <param name="distance">距离</param>
    private void CreateWall(float distance = 0)
    {
        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {
               //克隆砖块并实现墙体居中
                Instantiate(prefab, new Vector3(-width / 2 + j, 0.5f + i, distance), transform.rotation);
            }
        }
    }

    void Start()
    {
        if (prefab != null)
        {
            //在原点新建一栋墙
            CreateWall();
            //在距离原点10米处新建一栋墙
            CreateWall(10);
            //在距离原点20米处新建一栋墙
            CreateWall(20);
        }
    }
}

将脚本添加到Ground中,将刚才新建的预制体Cube拖动Wall的Prefab中

【Unity3D】【小游戏】打砖块

效果是这样的,三栋墙

【Unity3D】【小游戏】打砖块
想多建几栋墙,也可以

五,添加射击脚本

在Script文件夹中新建一个C#脚本Shoot,用于发射子弹

/// <summary>
/// 发射子弹
/// </summary>
public class Shoot : MonoBehaviour
{
    
    /// <summary>
    /// 子弹
    /// </summary>
    public GameObject bullet;
    /// <summary>
    /// 子弹速度
    /// </summary>
    int speed = 40;

    void Update()
    {
        //点击鼠标左键,发射一个子弹
        if (Input.GetMouseButtonDown(0))
        {
            ShootOne();
        }
        //点击鼠标右键,发射两个子弹
        else if (Input.GetMouseButtonDown(1))
        {
            ShootOne();

            ShootOne();
        }
        //点击鼠标中键(滑轮),发射多个子弹
        else if (Input.GetMouseButtonDown(2))
        {
            for (int i = 0; i < 100; i++)
            {
                ShootOne();
            }
        }
    }

    /// <summary>
    /// 发射一个子弹
    /// </summary>
    void ShootOne()
    {
        GameObject b = Instantiate(bullet, transform.position, transform.rotation);
        Rigidbody rgd = b.GetComponent<Rigidbody>();
        rgd.velocity = transform.forward * speed;//给子弹一个向前的速度
    }
}

将脚本添加到主相机Main Camera中,将刚才新建的预制体Sphere拖动Shoot的Bullet中
【Unity3D】【小游戏】打砖块

六,添加视角移动脚本

在Script文件夹中新建一个C#脚本Movement,用于移动视角

/// <summary>
/// 视角移动
/// </summary>
public class Movement : MonoBehaviour
{
    /// <summary>
    /// 移动速度
    /// </summary>
    float speed = 5;

    void Update()
    {
        //水平方向
        float h = Input.GetAxis("Horizontal");
        //垂直
        float v = Input.GetAxis("Vertical");
        //移动视角
        transform.Translate(new Vector3(h * speed, v * speed, 0) * Time.deltaTime);
    }
}

将脚本添加到主相机Main Camera中

七,效果

【Unity3D】【小游戏】打砖块

源码:https://github.com/GreAmbWang/Unity