当前位置: 首页 > news >正文

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

一、项目简介

        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 游戏的基本流程和核心逻辑

http://www.dtcms.com/a/36646.html

相关文章:

  • kotlin 知识点一 变量和函数
  • 蓝桥杯好题推荐--多项式输出
  • Python Flask基于时间序列预测算法的智慧交通数据可视化分析系统【附源码】
  • 【算法系列】常见排序算法:冒泡排序、选择排序与插入排序
  • Unity自定义树(Tree)
  • 城电科技|会追日的智能花,光伏太阳花开启绿色能源新篇章
  • 【无标题】网络安全公钥密码体制
  • html中的元素(2)
  • 云计算相关
  • 苍穹外卖day4套餐管理新增接口个人实现及思考过程记录
  • MaxKB+Ollama+DeepSeek1.5B部署知识库
  • DeepSeek-V3 论文总结
  • React进阶之React核心源码解析(三)
  • Jtti.cc:站群服务器SEO优化建议,如何分配多IP?
  • Java进阶:SpringMVC中放行静态资源
  • Go小技巧易错点100例(二十二)
  • Spring Boot 与 MyBatis 数据库操作
  • 【Java】I/O 流篇 —— 缓冲流
  • 什么是以知识为中心的服务(KCS)?最佳实践是什么?
  • STM32+ESP8266局域网通信
  • 【Java项目】基于Spring Boot的交流互动系统
  • 【工欲善其事】2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战
  • AI多模态梳理与应用思考|从单文本到多视觉的生成式AI的AGI关键路径
  • msc2n修改物料有效期
  • 【算法】 ‘abb‘ 型子序列问题——前后缀分解 python
  • 【红队利器】单文件一键结束火绒6.0
  • 2025最新最全【大模型学习路线规划】零基础入门到精通_大模型 开发 学习路线
  • C语言 —— 此去经年 应是良辰好景虚设 - 函数
  • Deepseek 实战全攻略,领航科技应用的深度探索之旅
  • R Excel 文件:高效数据处理的利器