三角洲辅助卡盟新版上线,应有尽有
当前位置:首页 > 游戏攻略> 正文

愤怒的小鸟之黑鸟来袭1

发布时间:06/21 10:57:59
《Unity零基础复刻<愤怒的小鸟之黑鸟来袭1>完整实操开发指南》

前置环境准备

所需工具及官方下载地址

所有工具均为官方稳定版,可直接点击链接下载:

  • Unity Hub:https://unity.cn/releases,安装后选择2021.3.21f1 LTS版本,安装时仅勾选「2D Core」「2D Sprite」模块即可
  • 游戏免费素材包:https://free-game-assets.itch.io/angry-birds-2d-game-assets,点击Download按钮直接下载,无需付费
  • 代码编辑器:系统自带记事本即可,有VS的用户可直接关联Unity使用

第一步:项目初始化配置

新建2D项目

打开Unity Hub,点击右上角「新项目」,左侧模板栏选择「2D Core」,项目名称填AngryBirds_BlackBird1存储路径不得包含中文、空格、特殊字符,否则会出现素材加载报错,点击右下角「创建」等待项目生成。

素材导入与全局配置

将下载的素材包解压,全选所有文件拖入Unity项目的Assets文件夹,等待右侧进度条走完完成导入。选中Assets/Sprites文件夹下的所有精灵文件,在Inspector面板修改如下配置:

  • Pixels Per Unit:填100
  • Filter Mode:选择Point(no filter)
  • 点击右下角「Apply」保存配置

第二步:核心玩法场景搭建

场景元素布置

右键左侧层级面板,选择「New Scene」命名为Level1,保存到Assets/Scenes文件夹下,按照如下顺序新建元素并调整参数:

  • 新建空物体命名为GameManager,放在场景任意位置即可
  • 新建Sprite命名为Ground,挂载地面素材,位置设为(X:0,Y:-3,Z:0),缩放X设为10铺满屏幕底部
  • 新建Sprite命名为Slingshot,挂载弹弓素材,位置设为(X:-4,Y:-2.2,Z:0)
  • 在弹弓下方Y=-1.5位置新建空物体命名为LaunchPoint,作为发射锚点
  • 新建Sprite命名为WoodBox,挂载木箱素材,位置设为(X:3,Y:-2,Z:0),再复制一个放在(X:3,Y:-1,Z:0)叠成两层
  • 新建Sprite命名为Pig,挂载小猪素材,位置设为(X:3,Y:0,Z:0)放在木箱顶部
  • 新建Sprite命名为BlackBird,挂载黑鸟素材,初始位置放在LaunchPoint位置

物理组件基础配置

给对应元素添加物理组件,所有参数直接按照如下设置即可:

  • 给Ground、WoodBox、Pig、BlackBird、LaunchPoint分别添加Rigidbody2D组件:Ground和LaunchPoint的Body Type选Static,Gravity Scale设为0;WoodBox、Pig的Body Type选Dynamic,Gravity Scale设为1;BlackBird的Body Type先设为Kinematic,Gravity Scale设为3
  • 给所有上述元素添加BoxCollider2D组件,取消勾选Is Trigger,点击Edit Collider调整碰撞框大小与精灵边缘完全匹配

第三步:黑鸟核心逻辑开发

发射与爆炸逻辑脚本

右键Assets文件夹选择「Create→C Script」,命名为SlingshotController,双击打开脚本,全量替换为如下代码,可直接复制使用:

```csharp using UnityEngine; public class SlingshotController : MonoBehaviour { public Transform slingshotPoint; // 弹弓发射锚点 public float maxDragDistance = 2f; // 最大拖拽距离 public float launchForce = 15f; // 基础发射力度 private Rigidbody2D rb; private bool isLaunched = false; void Start() { rb = GetComponent(); rb.bodyType = RigidbodyType2D.Kinematic; } void OnMouseDown() { if (!isLaunched) GetComponent().enabled = false; } void OnMouseDrag() { if (!isLaunched) { Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 dragOffset = mousePos - (Vector2)slingshotPoint.position; if (dragOffset.magnitude > maxDragDistance) dragOffset = dragOffset.normalized maxDragDistance; transform.position = (Vector2)slingshotPoint.position + dragOffset; } } void OnMouseUp() { if (!isLaunched) { isLaunched = true; rb.bodyType = RigidbodyType2D.Dynamic; Vector2 launchDir = (Vector2)slingshotPoint.position - (Vector2)transform.position; rb.velocity = launchDir launchForce; // 黑鸟发射1.5秒后触发爆炸技能 Invoke(nameof(BlackBirdExplode), 1.5f); } } void BlackBirdExplode() { if (isLaunched && !rb.isKinematic) { // 检测3米范围内所有可交互对象 Collider2D[] hitColliders = Physics2D.OverlapCircleAll(transform.position, 3f); foreach (Collider2D hit in hitColliders) { if (hit.CompareTag("Destructible") || hit.CompareTag("Pig")) { Rigidbody2D hitRb = hit.GetComponent(); if (hitRb != null) { Vector2 explodeForce = (hit.transform.position - transform.position).normalized 500f; hitRb.AddForce(explodeForce); if (hit.CompareTag("Destructible")) Destroy(hit.gameObject, 0.5f); if (hit.CompareTag("Pig")) Destroy(hit.gameObject, 0.2f); } } } Destroy(gameObject, 0.1f); } } } ```

脚本挂载与参数配置

  • 给BlackBird添加SpringJoint2D组件,Connected Body选择LaunchPoint的Rigidbody2D,Frequency设为5,Damping设为0.8
  • 将SlingshotController脚本拖到BlackBird物体上,slingshotPoint字段选择层级面板的LaunchPoint物体
  • 选中所有WoodBox物体,Inspector面板顶部Tag下拉框点击「Add Tag」,新建Destructible标签并选中;给Pig物体新建并选中Pig标签

第四步:通关逻辑与效果测试

通关判断脚本

新建C脚本命名为GameManager,全量替换为如下代码:

```csharp using UnityEngine; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { public GameObject[] pigs; // 场景内所有小猪 public float winDelay = 2f; // 通关后延迟重启时间 void Update() { bool allPigsDead = true; foreach (GameObject pig in pigs) { if (pig != null) { allPigsDead = false; break; } } if (allPigsDead) Invoke(nameof(ReloadLevel), winDelay); } void ReloadLevel() { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); } } ```

将脚本拖到GameManager物体上,pigs字段将场景内所有Pig物体拖入数组即可。

测试验证

点击Unity顶部的播放按钮,即可进入测试:用鼠标拖拽黑鸟向后拉动,松开即可发射,发射后1.5秒黑鸟会自动爆炸,炸毁范围内的木箱和小猪,所有小猪被销毁后2秒自动重启关卡。

常见卡壳问题排查

  • 拖拽黑鸟无反应:检查BlackBird的BoxCollider2D是否勾选启用,主相机Projection是否为Orthographic,项目存储路径是否有中文
  • 爆炸无击飞效果:检查WoodBox和Pig的Tag是否配置正确,OverlapCircle的半径是否大于2,Rigidbody2D的Body Type是否为Dynamic
  • 发射后黑鸟直接掉落:检查BlackBird的Gravity Scale是否设为3,launchForce参数是否大于10

版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/22550.html