一、項目簡介
????????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 游戲的基本流程和核心邏輯