一、项目简介
Brick Breaker 是一款经典的打砖块游戏,本次案例将使用 Unity 引擎来实现该游戏的核心功能。
游戏画面如下:
Brick_ breaker
二、项目结构概览和前期准备
(1)在 Unity 项目视图中,我们可以看到几个重要的文件夹:
- Audio:存放音频文件,如子弹发射音效和背景音乐。
- Picture:理论上存放游戏所需图片资源(比如地板图片材质,砖块的图片材质)。
- Prefab:预制体文件夹,包含 Bullet 和 Wall 预制体,方便在场景中实例化。
- Scenes:场景文件夹,当前仅有 SampleScene。
- Scripts:脚本文件夹,存放控制游戏逻辑的 C# 脚本,如 Camera_Follow 和 Shoot。
(2)导入资源操作:先在Project创建文件夹(便于管理不同资源),这里以Audio(音频)文件夹为例子,Import new asset,把需要的音频文件导入进来即可。其他的资源,比如导入图片也是一样
(3)导入预制体:bullet(子弹)和brick(砖块)是需要很多的,而且进行操作基本相同,所以他们作为预制体,便于实例化操作,或者统一操作。(这里我以子弹(球体)为例)直接把创建的球体,拖入到你在Project视图中你创建的Prefab文件夹中,即可出现子弹具有浅蓝色的图标
步骤一:在Hierarchy中创建相应的物体(Wall和Bullet)
步骤二:拖入到Project视图中创建的Prefab文件夹中,即可出现子弹具有浅蓝色的图标
三、核心脚本
(一)Shoot 脚本:该脚本主要负责子弹发射和音频控制。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Shoot : MonoBehaviour
{public GameObject bulletPrefab;public int bullect_Speed=50;public AudioSource bgmAudio;public AudioSource shootAudio;// Start is called before the first frame updatevoid Start(){// 这里可以设置背景音乐循环播放bgmAudio.loop = true;// 开始播放背景音乐bgmAudio.Play();}// Update is called once per framevoid Update(){if(Input.GetMouseButtonDown(0)){shootAudio.Play();GameObject bullect=GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation);Rigidbody rd= bullect.GetComponent<Rigidbody>();rd.velocity = new Vector3(0,0,-1)*bullect_Speed;// 播放发射声音}}
}
(二)Camera_Follow 脚本:该脚本用于控制相机跟随。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Camera_Follow : MonoBehaviour
{public float Move_Speed = 2;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){float f1= Time.deltaTime;float f2= Input.GetAxisRaw("Horizontal");float f3 = Input.GetAxisRaw("Vertical");transform.Translate(new Vector3(f2,f3,0)*f1* Move_Speed);}
}
四、制作步骤详细(核心)
1.导入资源:将音频文件、预制体等资源导入到对应的文件夹中。(在上方已说)
2.创建项目和场景:在场景中添加 基本对象。
步骤一:创建地面,Create——3D Object——Plane(创建完成记得修改名字,便于管理)

步骤二:设置地面大小以及个性化地面
步骤三:设置砖块(Brick)以及个性化砖块(利用复制和步移)
(1)Ctrl和shift先选中若干砖块(便于更快的形成砖墙)
(2)步移(Ctrl+移动):一次移动0.25个单位
(3)搭建好之后,将所有的砖块,统一放到一个空父类里面,便于管理
(4)将导入的图片直接拖放到prefab文件夹的Wall中即可,直接对砖块墙进行个性化。
3.编写脚本:创建 Shoot 和 Camera_Follow 脚本,实现功能。
(1)相机移动的原理:相机的transform组件中有translate方法可以控制位置变化,通过按键wasd会传入一个变化的值[-1,1],再将这个值*一定的倍数,那么就可以形成一个合适的速度,也就可以控制相机移动了。
(2)Shoot脚本实现鼠标左键发射原理:
(1)检测鼠标左键被按下:
Input.GetMouseButtonDown(0):会返回一个bool值(true或者false),如果为真,代表被按下。(0代表鼠标左键,1代表鼠标右键)
(2)按下的瞬间要产生一个子弹:
GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation);
Gameobject中有Instantiate()方法可以在指定位置,生成预制体实例
(3)子弹还有以一定的速度发射到正前方
我们创建一个物体接受(2)中每次创建的实例,然后选中这个物体的刚体组件,调用其属性velocity(速度),并给他一个速度即可。
4.挂载脚本和设置参数:将脚本挂载到相应的游戏对象上,并设置好脚本中的参数,如预制体引用、音频源等
(1)把脚本拖放到 Main Camera上即可
(2)设置音频
步骤一:在Main Camera中添加Audio source组件,然后在组件中添加导入的 射击音效
步骤二:然后创建一个空物体,和上面一样的操作添加Audio source组件,然后在组件中添加导入的 背景音效
步骤三:然后再选中Main Camera ,进行如图操作即可成功导入音频资源到物体上
步骤四:利用代码,在恰当的时间,启动音频的开关即可。
五、后续扩展
目前该案例只是一个简单的雏形,后续可以添加砖块对象、碰撞检测、得分系统等功能,进一步完善 Brick Breaker 游戏。希望通过这篇博客,能帮助大家了解使用 Unity 制作 Brick Breaker 游戏的基本流程和核心逻辑