[Unity小游戏]打砖块(打方块)(超详细)

打砖块小游戏通常会被当做Unity学习的第一个案例,下面给大家介绍如何实现打砖块案例的,先来张图看看效果

java打砖块游戏题目怎么来的 打砖块游戏攻略_unity

首先我们要知道QWER分别是选择、移动、旋转、缩放工具的快捷键(英文模式下按住才有用),只有在scene场景中才能对物体进行操作,game视角是相机视角

一、打开Unity,创建一个cube拉伸来当作地面放置方块(要是地形够平就可以不用,直接创建平面也行,我这里按F2重命名为地面)

java打砖块游戏题目怎么来的 打砖块游戏攻略_右键_02


二、创建一个cube,将它移动到地面的上方,并给它添加Rigibody,使他具备基本的物理属性(简单来说就是被碰撞后会被击飞或者在半空中会掉下来,这是实现打砖块游戏的基础)

java打砖块游戏题目怎么来的 打砖块游戏攻略_拖拽_03


三、将此cube移动到Assets中,使他成为一个预制体

java打砖块游戏题目怎么来的 打砖块游戏攻略_java打砖块游戏题目怎么来的_04


四、复制多个Cube,使它成为一堵墙。方法:在scene场景中,点击cube,Ctrl+D复制,选择移动工具,按住CTRL键移动,这样每次最会移动一个预设单位距离

java打砖块游戏题目怎么来的 打砖块游戏攻略_java打砖块游戏题目怎么来的_05

多复制几个后调整位置对齐(因为上传的动图要小于5M所以我没浪费时间对齐,可以按住ctrl移动来对齐)

java打砖块游戏题目怎么来的 打砖块游戏攻略_小游戏_06


多选:点击要复制的第一个cube,按住shift的同时点击要复制的最后一个cube,按Ctrl+D,用移动工具在场景里面按住Ctrl拖动,就能够复制出一堵墙。

补充:给方块上色

五、创建一个材质,设置颜色,给cube上色,单击Assets文件夹,右键选择Create ——Material(我这里就不浪费时间,只上色一个)

java打砖块游戏题目怎么来的 打砖块游戏攻略_拖拽_07


六、调整相机位置到cube墙体的前方,结合scene和game场景来看相机位置是否合适(可以通过相机的Transform值来调整相机位置)

java打砖块游戏题目怎么来的 打砖块游戏攻略_java打砖块游戏题目怎么来的_08


七、点击相机,给相机添加移动脚本,我给脚本起名为move,点击进入脚本进行编辑

java打砖块游戏题目怎么来的 打砖块游戏攻略_右键_09


(如果你的脚本名和我的脚本名一样,可以直接复制一下代码,不然需要改class后面的类名)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class move : MonoBehaviour
{
    public float speed = 3;  //设置一个共有类型的变量 来设置相机移动速度 public类型可以在代码外进行修改 并以代码外修改的数据作为脚本中运行的数据
    public float bulletspeed = 50;  //子弹速度
    private float h;  //设置h来获取Horizontal(横轴方向的输入,即A键和D键的输入)
    private float z;  //设置z来获取Vertical(纵轴方向的输入,即W键和S键的输入)
    public GameObject bullet;  //定义一个对象:子弹


    //start函数中的代码,在游戏开始时会运行一次,后面将不会运行 ,这里用不到
    void Start()
    {
    }

    // Update 里面的代码 每一帧都会运行
    void Update()
    {
        float h = Input.GetAxis("Horizontal");  //获取AD键的输入  即水平方向
        float z = Input.GetAxis("Vertical");    //获取WS键的输入  垂直方向
        transform.Translate(new Vector3(h, z, 0) * Time.deltaTime * speed);
        //translate是transform的一个属性 表示平移 Vector3(x,y,z)表示空间中的一个三维向量 我们这里来通过h和z的输入来控制向量的大小来实现相机的位移
        //Update一帧执行60次,每帧都new 一个Vector3的话,对内存是一个消耗,所以乘一个 Time.deltaTime后每帧都只执行一次 也就是说 按一下只移动3个单位(speed=3),不然就会移动speed*60个单位
        if (Input.GetMouseButtonDown(0))  //如果按下鼠标左键  代码表示为  Input.GetMouseButton(0)
        {
            //instantiate(克隆对象,克隆位置,克隆角度)   transform.position没有前缀 默认为this.transform.potiton 即这个物体的位置
            GameObject a = GameObject.Instantiate(bullet, transform.position, transform.rotation); //创建一个和bullet(子弹)一样的对象,位置和相机的位置一样,因为这个脚本是挂在相机上面的;
            Rigidbody rgd = a.GetComponent<Rigidbody>(); //把a刚体属性给rgd
            rgd.velocity = transform.forward * bulletspeed; //Rigidbody.velocity 这个方法是瞬间给物体一个恒定的速度,将物体提升至该速度。
            // transform.forward 是向前的方向  * speed 发射速度   
           Destroy(a, 2);  //两秒后摧毁a  即子弹
        }
    }
}

Ctrl+S保存!!!

八、回到Unity中制作子弹预制体,在这之前我们把所以cube都放在一个空物体下,点击scene右键创建一个空物体,利用shift键选中所有cube,拖拽至gameobject下,按F2可以重命名,我将它命名为方块墙

java打砖块游戏题目怎么来的 打砖块游戏攻略_小游戏_10

创建子弹预制体:在空白面板处右键创建sphere(球体),点击sphere,在其Transform面板下找到Scale(缩放),我将其各个方向的大小都缩放至0.1 使其成为子弹的大小,并将其拖拽至Assets下使之成为预制体。

java打砖块游戏题目怎么来的 打砖块游戏攻略_java打砖块游戏题目怎么来的_11


然后在scene下把sphere删除掉(文件中还是会有sphere,不用担心,下图为删除后的样子)

java打砖块游戏题目怎么来的 打砖块游戏攻略_小游戏_12

九、给预制体sphere添加Rigidbody组件,使其具备物理属性,在代码中也调用了其物理属性,所以得加上

java打砖块游戏题目怎么来的 打砖块游戏攻略_unity_13


加上Rigidbody后再将sphere拖拽至相机move脚本下的bullet中,使之实例化,代码中的bullet就成了游戏中的sphere了

java打砖块游戏题目怎么来的 打砖块游戏攻略_unity_14

十、点击运行按钮即可运行,WASD控制移动,鼠标左键发射。

java打砖块游戏题目怎么来的 打砖块游戏攻略_右键_15


ohhh这样我们的第一个Unity案例就完成了!是不是很激动!!

————————————————分割线———————————————

前几天上课突然来了灵感,制作了一款打砖块游戏,下面附有链接,里面有三种游戏模式,有三个彩蛋,告诉大家一个彩蛋 第一个游戏中按7次N再按K 可以用大方块射击 第一个游戏需要在4秒内击落所有方块 第二个游戏需要在23秒内击落23个方块


在我的资源里面也有:点击下载

(gif动图太大了,只能录一小部分,感兴趣的可以下载一个玩玩,37M大小,最新的2.3.2版本,可以在我的资源里面找到1.0.0版本,1.0.0版本为最初版本,只有一个功能)

java打砖块游戏题目怎么来的 打砖块游戏攻略_小游戏_16