Unity百游修炼(2)——Brick_Breaker详细制作全流程

发布于:2025-02-25 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、项目简介

        Brick Breaker 是一款经典的打砖块游戏,本次案例将使用 Unity 引擎来实现该游戏的核心功能。

游戏画面如下:

Brick_ breaker


二、项目结构概览和前期准备

(1)在 Unity 项目视图中,我们可以看到几个重要的文件夹:

  • Audio存放音频文件,如子弹发射音效背景音乐
  • Picture:理论上存放游戏所需图片资源(比如地板图片材质砖块的图片材质)。
  • Prefab:预制体文件夹,包含 BulletWall 预制体方便在场景中实例化
  • Scenes:场景文件夹,当前仅有 SampleScene。
  • Scripts:脚本文件夹,存放控制游戏逻辑的 C# 脚本,如 Camera_FollowShoot

(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 update
    void Start()
    {
        // 这里可以设置背景音乐循环播放
        bgmAudio.loop = true;
        // 开始播放背景音乐
        bgmAudio.Play();
    }

    // Update is called once per frame
    void 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 update
    void Start()
    {

    }

    // Update is called once per frame
    void 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 游戏的基本流程和核心逻辑


网站公告

今日签到

点亮在社区的每一天
去签到