2D本地合作游戏 - 三人小组项目
游戏背景:
一栋高层办公楼遭到恐怖分子占领,楼内员工被劫持为人质。玩家将组成一支双人特警小队,从大楼顶层开始逐层向下推进,搜索被困人员、清除沿途威胁,并设法完成整栋建筑的营救行动。
两名玩家需要分别发挥盾牌手与突击手的优势:一人利用盾牌抵挡攻击、掩护推进并吸引敌人火力,另一人则负责寻找射击机会、快速消灭威胁。只有通过相互掩护、协调行动并根据现场情况制定进攻策略,小队才能安全突破各个楼层并完成任务。




设计目标:
- 以非对称角色构建相互依赖的合作关系
两名玩家分别扮演盾牌手与突击手,并拥有不同的能力、武器与战斗职责。盾牌手负责阻挡敌人攻击、吸引火力并创造射击空间;突击手则利用高伤害武器抓住进攻时机,快速清除威胁。双方必须依靠彼此的能力才能安全推进关卡。 - 围绕掩护与射击窗口展开实时配合
战斗过程中,盾牌手需要在前方承受攻击,并在合适时机下蹲,为后方的突击手留出射击空间。突击手则需要根据盾牌手的动作控制开火时机,避免误伤队友。通过“站立掩护—下蹲让位—突击射击”的配合循环,使实时沟通与动作协调成为本地合作体验的核心。 - 利用横版视角营造有限信息下的紧张探索
2D 横版视角限制了玩家对前方房间和潜在威胁的观察范围,使玩家无法提前掌握完整的敌人分布。两名玩家需要共同侦察未知区域,并在有限信息下决定推进方式,从而增强探索过程中的紧张感与不确定性。 - 通过多种突入方式提供战术选择
提供爆破、投掷闪光弹或手动破门多种突入方式,让玩家能够根据情况选择不同战术,提升互动性与作为特警的代入感。
创作灵感:
项目开始时,我们被要求使用 Unity 开发一款 2D 本地双人合作游戏。考虑到题目并未限制具体主题与玩法方向,我们决定围绕“战术协作”这一核心体验展开设计。
受到 Rainbow Six、SWAT 和 Door Kickers 等战术游戏的启发,我们尝试将信息沟通、职责分工与协同推进等要素融入横版射击玩法之中。
游戏的核心game loop由 推进 → 交战 → 营救 三个阶段循环构成,并通过盾牌手与突击手的角色的数值与功能上的差异强化玩家之间的合作需求。
* 进行构思时所参考的游戏
非对称角色设计:
突击手:
配备高伤害步枪,负责消灭敌人、突破防线并执行战术突入。
生命值:100
攻击力:10
射速:15
弹夹容量: 30
盾牌手:
拥有较高生命值,但仅能使用低伤害手枪,负责侦察、吸引火力并为队友创造安全的推进空间。
生命值:200
攻击力:26
射速:1.5
弹夹容量:07
如前文所述,为了强化两名玩家之间的合作关系,本作采用了非对称角色设计。盾牌手拥有更高的生命值,主要负责阻挡敌人攻击、吸引火力并保护队友;突击手则配备高伤害武器,负责抓住进攻机会快速清除敌人。
两名角色的配合围绕“掩护与射击窗口”展开。战斗中,盾牌手需要站在前方抵挡敌人的攻击,并在敌人攻击的间隔中及时下蹲,为身后的突击手腾出射击空间。突击手则需要等待盾牌手下蹲后再向前方开火,利用短暂的窗口击杀敌人。
由于突击手的攻击同样会对盾牌手造成伤害,如果在盾牌手站立时贸然射击,便可能直接误伤甚至击倒队友。与此同时,盾牌手的生命值虽然更高,但并非无限。如果双方未能及时完成掩护与输出的转换,盾牌手也会在持续承受攻击后被敌人击倒。
因此,两名玩家需要准确把握敌人的攻击节奏,并围绕“站立防御—下蹲让位—突击射击”的流程进行实时配合。只有在避免友军伤害的同时快速消灭敌人,双方才能安全推进关卡。通过非对称能力、职责互补与友军伤害机制,本作将合作从一种可选的游玩方式转化为关卡推进的必要条件,使实时沟通与相互配合成为本地双人体验的核心。
删除的装备系统:
* 最终版本中已移除的装备系统截图
在项目早期阶段,我们曾设计过一套装备配置系统。该系统允许玩家在进入关卡前预览地图,并根据任务需求选择携带的武器装备。
为了支持这一功能,我们制作了多种不同类型的枪械资源,并搭建了对应的武器选择界面。然而,随着开发的推进,我们逐渐意识到这套系统带来了较高的制作成本与技术负担。每把武器都需要独立的绑定(Rig)与动画资源,而这些内容的制作工作量远超团队的预期。与此同时,在实现玩家自定义武器选择以及通过 C# 动态加载武器并驱动其行为时,我们也遇到了不少技术难题。
考虑到项目周期与团队规模的限制,我们最终做出了放弃该系统的决定,并将开发重心转移到核心玩法与关卡设计的打磨上。虽然删除这一功能令人遗憾,但这一决定帮助我们更好地控制项目范围,将有限资源集中投入到最重要的机制之中,并避免因功能扩张而影响整体开发进度。
像素素材的制作:
场景素材的设计与制作:
在场景素材制作阶段,团队中的另外两位成员主要负责像素资源制作,而我则负责关卡区域与环境内容的前期规划。我需要根据反恐题材确定关卡中应包含哪些空间,例如开放式办公区、会议室、走廊与公共区域,并规划它们在整体关卡中的功能与分布。
与此同时,我还负责构思这些空间在遭到恐怖分子占领和破坏后的环境状态,包括家具翻倒、玻璃破碎、杂物散落以及临时封锁等场景细节。通过这些concept设计,我为后续资源制作提供了明确的空间类型、环境风格与道具需求,使场景既能服务关卡功能,也能体现建筑遭到袭击后的叙事背景。
枪械素材与动画资源的制作:
在游戏内角色与枪械资源制作方面,我负责设计并绘制了两把枪械,同时完成了全部角色与武器的绑定、动画制作及引擎配置。我使用 Unity 的 Sprite Editor 与 Animation 系统对相关资源进行切分、整合与动画实现,确保角色动作与武器表现能够在游戏中正确运行。
为了支持后续动画制作,每把武器都会依据其结构特点在 Photoshop 中进行分层处理。所有可能产生运动的部件,例如抛壳窗、弹匣等,都会被单独拆分并置于独立图层,以便在射击、换弹等动画过程中实现正确的运动效果。
此外,我还负责制作主菜单中的直升机素材及对应动画。为了增强主菜单的视觉表现,我结合多层视差效果与逐帧动画,为画面营造出更丰富的空间层次与动态感。
关卡设计:
为了让“营救人质”不仅是任务目标,也成为驱动玩家探索关卡的核心动力,我将关卡设计为一栋可自由往返的多层办公大楼。人质被分散设置在不同楼层与房间中,玩家可以实时查看已营救数量,并根据剩余目标判断是否继续深入尚未探索的区域。通过这种方式,任务进度与空间探索被直接关联,使营救行为持续引导玩家拓展自己的探索范围。
关卡主要围绕垂直移动展开。电梯作为连接各楼层的核心交通节点,使玩家可以在不同区域之间快速往返,并根据人质分布和当前状况自主规划探索顺序。每层设置两个分别通往上层与下层的电梯入口,在保留路线选择的同时,也让楼层之间形成明确的方向关系,避免玩家在多层结构中失去空间判断。
在主要楼层之外,我还加入了一条不依赖电梯的可选探索路线。第四层被设计为隐藏区域,玩家无法通过常规交通路径直接到达,而需要在第三层最左侧发现通风管道入口,并通过这条隐蔽路线进入。该设计打破了电梯主导的常规移动模式,也鼓励玩家关注关卡边缘处的非主要路径。
* 第一版本的关卡示意图
隐藏区域中设置了额外人质,作为对主动探索行为的直接奖励。对只完成基本目标的玩家而言,该区域并非强制内容;但对于希望营救全部人质的玩家,它则提供了一条更具发现感的支线目标。通过主路径、楼层往返与隐藏路线的结合,关卡在维持清晰空间结构的同时,也为玩家提供了自主规划、回访与深度探索的空间。


* 两个区域的关卡截图
Navigation Design:
由于本关卡采用开放式关卡,因此导航设计的重点之一是帮助玩家建立方向感,并在探索过程中始终清楚自己所处的位置。
玩家需要通过电梯在不同楼层之间移动,因此电梯系统自然地将整个关卡划分为多个相对独立的区域。这种分区方式能够有效降低玩家的认知负担,使其专注于当前楼层的探索,而不会因为一次性接收过多空间信息而产生迷失感。
同时,每层楼的电梯都位于相同的中心位置,使其成为贯穿整个关卡的固定空间锚点。玩家能够以电梯为参照建立心理地图(Mental Map),并在探索过程中更容易判断自身位置与移动方向。
除此之外,每层楼还设置了具有独特视觉特征或功能定位的房间,作为地标(Landmark)或兴趣点(POI),进一步强化玩家的空间记忆。例如,二楼设有一间布满尸体的监控室,而三楼则包含一间拥有大面积玻璃幕墙的会议室。这些具有鲜明视觉特征和环境叙事内容的区域,能够帮助玩家在自由探索时快速辨识自身所在位置,并进一步强化对空间的认知与记忆。
* 监控室
* 会议室
游戏节奏规划:
游戏机制:
战争迷雾:
为了增加探索过程中的不确定性,我们在关卡中加入了一套简化版战争迷雾系统。游戏开始时,所有房间都会被近乎全黑的半透明遮罩覆盖,玩家无法直接观察房间内部情况。
只有当玩家打开对应房间的门后,遮罩才会被移除,房间内的环境、敌人以及潜在威胁才会被揭示。
这一机制限制了玩家的信息获取,使其在进入新区域前无法完全掌握内部情况,从而强化了探索时的紧张感与决策压力。
战术突入系统:
为了强化战术协作与突入体验,我们为门体设计了多种进入方式,包括正常开门(Open)、踹门(Kick)以及爆破突入(Breach)。
当玩家靠近门体时,系统会通过 BoxCollider 检测玩家位置,并显示对应的交互选项。玩家选择不同的进入方式后,所有相关的 Animator 组件都会播放对应动画,以呈现不同的突入效果。
若玩家选择爆破突入,门体会切换至受损状态的 Sprite,从视觉上反馈门体已被破坏,同时强化突入行动的冲击感与战术氛围。
电梯系统:
电梯系统用于支持玩家在不同楼层之间进行垂直移动。当玩家进入电梯区域时,系统会通过 BoxCollider 触发交互提示,玩家可以选择目标楼层,并被传送至对应位置。
人质系统:
人质系统采用模块化脚本实现,可被挂载到关卡中的不同人质对象上。当玩家与人质的 BoxCollider 发生重叠时,该人质对象会被移除,同时 UI 中的已营救人质数量会同步更新。
恢复电力:
如关卡截图所示,三楼左侧设置了一间电力控制室。玩家与房间内的电力拉杆互动后,建筑供电将被恢复,场景中的灯光会被激活,同时玩家的夜视效果将被关闭。
该系统的实现方式与 战术突入系统类似。当玩家按下互动键后,所有相关的 Animator 组件会播放对应动画,包括电力恢复动画(Power Supply)以及玩家角色的夜视关闭动画(Night Vision Shutdown)。与此同时,动态灯光会被添加至关卡中,以表现建筑恢复供电后的环境变化。
通风管道系统(隐藏区域入口):
通风管道被设计为关卡中隐藏区域的入口。通过为通风口盖板添加 BoxCollider,并挂载敌人脚本,使其具备可破坏属性,玩家可以通过射击破坏盖板。
当盖板承受 50 点伤害 后,会自动破裂并露出一条向下延伸的通道。玩家进入该通道后,会在一组较为复杂的 Collider 设置引导下自然下落,并最终到达第四层隐藏区域。
玩家角色的运作形式:
为了让角色在移动过程中同时完成射击与换弹等操作,我将玩家角色拆分为“角色主体”与“持枪手臂”两个独立部分。角色主体负责行走、奔跑和下蹲等移动动画,持枪手臂则单独处理武器朝向、射击及换弹动画。
这种分层结构使上下半身动画能够独立播放,避免移动动作与武器操作相互覆盖。同时,两名角色所使用的不同武器也可以分别配置对应动画,从而确保盾牌手与突击手的武器表现互不冲突,并能够根据各自的操作状态正确切换。
角色下半身(主体):
角色主体包含 Rigidbody2D、BoxCollider 以及 CircleCollider,并由 CharacterController2D 与 PlayerMovement 脚本进行控制。该部分负责角色的移动、蹲伏以及碰撞检测(跳跃功能在后期被移除,但相关代码仍保留在项目中)。
此外,生命值系统也挂载于角色主体上,并会实时更新角色腰间显示装置中的 UI 信息,以反映当前生命值状态。
角色上半身(手臂和武器):
持枪手臂负责所有与武器相关的功能。每种武器都以独立脚本的形式挂载于手臂对象上,其中包含:
子弹生成位置,武器的伤害,射速,弹夹子弹数量和视觉与音效反馈以及动画控制。
武器的弹药数据会实时同步至武器旁的 UI 界面,方便玩家查看当前剩余弹药量。
由于两名玩家在游戏过程中共享同一摄像机,若其中一方推进过快,便可能离开画面显示范围。为避免这一问题,我们在盾牌手角色上设置了突击手无法穿越的碰撞边界,以限制两名玩家之间的最大距离,确保双方始终处于同一画面内。
友伤系统:
在开发后期,我们加入了友军伤害机制,以强化玩家之间的协作需求。由于攻击可能误伤队友,玩家必须时刻关注彼此的位置与行动,从而提升战斗中的沟通与配合。
这一机制也进一步巩固了盾牌手与火力手的角色定位。当遭遇敌人时,盾牌手需要蹲下并利用盾牌吸收火力,同时为后方创造安全的射击空间;火力手则负责从后方精准消灭敌人。
由此形成了一套清晰的战斗节奏:
发现敌人 → 盾牌手蹲下提供掩护 → 突击手进行射击 → 继续推进
通过将友军伤害与角色职责相结合,游戏鼓励玩家持续进行站位调整与战术沟通,从而进一步强化双人合作体验。
敌人角色:
敌人采用单体 Sprite 结构,并使用 PolygonCollider2D 与 Rigidbody2D 实现碰撞检测及物理移动。
AI 行为由 Enemy_Behaviour 脚本驱动,通过 Raycast 检测玩家位置,在巡逻与攻击状态之间进行切换。当玩家进入侦测范围后,敌人会主动开火;当玩家离开视线范围后,则恢复既定巡逻路线。
巡逻路径通过 Left 与 Right 两个节点进行配置,敌人会在两点之间循环移动。
除生命值系统外,敌人的武器参数、攻击逻辑以及视觉特效均集中管理于 Enemy_Behaviour 脚本中,以便快速调整不同敌人的战斗表现。