作品集

Spiritual Well - 开拓芯参赛项目

项目类型:2D 平台跳跃 / 多角色解谜 / 团队项目
开发周期:2026 年 1 月 – 2026 年 5 月
开发环境:Unity、C#、2D Controller、Cinemachine、TextMesh Pro
演示视频Bilibili - Spiritual Well
试玩链接itch.io - Spiritual Well

项目简介

《Spiritual Well》是一款 2D 多角色平台解谜游戏。玩家需要在战士、盗贼、法师、弓箭手四名角色之间切换,利用各自能力通过平台、风场、机关和地形谜题。项目中我负责除压力板、门、管道、重力平台以外的主要程序相关内容。

场景展示1

场景展示2

我的职责

  • 基于开源 2D Controller 接入并调整移动、跳跃、输入接收和角色控制逻辑,参与角色技能与核心玩法设计。
  • 实现四名角色的差异化技能:战士背人并投掷、盗贼传送队友、法师无重力浮空 / 冰形态滑行、弓箭手射箭 / 收箭与灵犬跟随。
  • 实现角色技能统一入口、角色切换、Cinemachine 跟随、队友碰撞忽略、死亡后自动切换存活角色等基础系统。
  • 参与升降平台、风场等交互物实现,并负责美术资产导入、BGM、技能音效、UI 音效等音频接入。

核心亮点

  • 多角色技能系统:用 CharacterAbilityRunner 根据 CharacterRoleTag 分发左键技能,每个角色能力独立成组件,避免把所有技能堆进角色控制器。
  • 战士投掷SoldierAbility 支持检测附近队友 / NPC、背起目标、显示抛物线预览、松手投掷,并用 ThrownState 暂时让被投掷对象交给物理系统控制。
  • 法师双形态MageController 管理火 / 冰形态。火形态禁用下坠实现浮空,冰形态切换低摩擦材质与减速度实现滑行,同时保留被战士投掷和风场影响。
  • 弓箭手与灵犬ArcherAbility 实现蓄力、轨迹预览、直线射箭、插入物体和收箭;ArcherPassiveDog / SpiritDog 让灵犬在箭和主人之间切换跟随目标。
  • 小队控制与镜头CameraSwitchController 只允许当前角色接收输入,切换时更新 Cinemachine 跟随目标,并处理死亡、被背起、弓箭蓄力等状态下的输入限制。

技术难点与解决方案

  • 技能与基础控制器冲突:投掷、浮空、蓄力射箭都会影响移动输入或刚体速度。我通过 PlayerController.CanReceiveInputThrownState 和角色能力组件,把“谁能控制角色”这件事集中判断。
  • 战士投掷的物理接管:被背起时目标需要禁用物理并跟随战士,投掷瞬间又要恢复刚体并设置速度。实现中将背起、瞄准、投掷和落地恢复拆成不同状态,减少卡死和速度被覆盖的问题。
  • 法师浮空与风场共存:火形态需要无重力,但仍要能被战士投掷和风场影响。处理方式是常态下清除下坠速度,被投掷时恢复参考重力,风场则直接修改最终速度。
  • 多角色协作的边界状态:角色可能死亡、被背起、正在蓄力、被切换或通过检查点重置。我用相机切换、死亡处理和复活点系统统一刷新可控角色和队伍状态。

项目结果

  • 完成四名角色的核心能力闭环,并支持角色切换、平台跳跃、投掷、传送、浮空、滑行、射箭、灵犬跟随等组合解谜玩法。
  • 搭建了可复用的角色能力组件和小队控制逻辑,方便后续继续扩展新角色或新机关。
  • 完成项目演示视频和 itch.io 试玩版本,能直接展示核心玩法与关卡流程。

相关链接

ELLA MASK - 2026 Global Game Jam 作品

项目类型:2D 平台跳跃 / 解谜 / Game Jam 项目
开发周期:48 小时
开发环境:Unity、C#、Cinemachine、TextMesh Pro、Twine/Twee
项目主题:Mask / 面具
演示视频Bilibili - ELLA MASK
试玩链接itch.io - ELLA MASK

项目简介

《ELLA MASK》是我参与 2026 Global Game Jam 时完成的 2D 平台跳跃解谜游戏。游戏围绕“戴上 / 摘下面具”设计核心机制:玩家可以在表世界与里世界之间切换,利用两套地形、障碍和通路的差异完成跑跳、躲避与解谜。

场景展示

我的职责

  • 负责核心玩法原型设计,将“面具”主题落到“表里世界切换”的可玩机制上。
  • 负责 Unity 客户端主要功能实现:世界切换、场景流程、交互物、死亡复活、对话接入、视差背景和部分 UI/音频基础设施。
  • 接入并调整 Tarodev 2D Controller,快速建立角色移动与跳跃手感。
  • 实现 Twine/Twee 剧情文本导入链路,把策划文本转换为 Unity 运行时对话数据。

核心亮点

  • 表里世界切换:同一场景内搭建上下两套地形,玩家切换时沿 Y 轴瞬移,并同步世界状态、Cinemachine、死亡检测和背景参考坐标。
  • 稳定的关卡流程:用 SceneLoader 统一处理淡入淡出、异步加载和切场景状态复位,减少 UI、输入和场景切换残留问题。
  • 平台机关与死亡复活:实现移动平台、风场、地刺等交互物,并用 PlayerDeathHandler 统一处理死亡、复活、速度清理和世界状态修正。
  • 剧情快速接入:实现 TwineTweeImporter,支持 passage、分支链接和说话者信息解析,降低剧情文本接入 Unity 的成本。
  • 无限视差背景:实现 ParallaxInfiniteLayer,根据相机宽度自动生成循环背景瓦片,并兼容世界切换时的整体瞬移。

技术难点与解决方案

  • 世界切换同步:如果只移动玩家,镜头、背景、死亡检测和复活逻辑都会错位。我用世界状态管理器作为中心,并通过事件 / 接口通知相关系统同步修正。
  • Jam 时间限制:48 小时内不能追求完整框架,所以我把流程、输入和常驻对象做成够用的基础设施,优先保证项目能稳定跑完。
  • 移动平台手感:平台只移动自身会导致玩家滑落,因此在 PlatformMover2D 中加入 carry 机制,让站在平台上的对象随平台同步位移。

项目结果

  • 在 48 小时内完成了可试玩版本,包含开始界面、多个关卡、世界切换、平台跳跃、机关、死亡复活、剧情对话、音频和基础 UI。
  • 成功将“面具”主题转化为可操作的核心机制,而不是只停留在视觉设定上。
  • 项目发布了演示视频和 itch.io 试玩页面,可直接验证最终效果。

相关链接

Moonbucks - Ludum Dare 59 Game Jam 作品

项目类型:调酒 / 排程 / 时间管理 / Game Jam 项目
开发环境:Unity、C#、TextMesh Pro、ScriptableObject
项目主题:Signal / 信号
游戏链接Ludum Dare - Moonbucks

项目简介

《Moonbucks》是第 59 届 Ludum Dare Game Jam 作品。游戏设定为月球老板远程操控机器人经营酒馆,玩家需要读懂客人的需求信号,把材料、扫把、补货等动作提前排进 7 个执行槽;点击运行后,机器人会按队列顺序自动执行,玩家不能中途修改。

场景展示

我的职责

  • 负责核心玩法设计,将“信号”主题转化为“读懂客人需求 + 远程排程执行”的玩法循环。
  • 负责 Unity 客户端主要功能实现:执行槽、材料拖拽、配方结算、需求生成、截止时间、分数和游戏结束流程。
  • 实现客人需求与饮品配方系统,使用 DrinkRecipe / IngredientData 管理饮品步骤和提示文本。
  • 负责 HUD 反馈,包括需求倒计时、分数变化、客人反馈和运行阶段的视觉提示。

核心亮点

  • 执行队列玩法:玩家在编辑阶段规划 7 个槽位,运行后队列自动执行,形成“计划 -> 执行 -> 承担结果”的核心循环。
  • 需求对象建模:将客人需求从简单时间数组升级为 ActiveNeed 对象,记录类型、目标、截止时间、完成状态和失败状态,避免重复结算。
  • 基于执行成本的截止时间:不再单纯随机生成限制时间,而是按饮品材料耗时、清理耗时和队列顺序推算可完成时间,再附加缓冲。
  • 配方与对话联动DrinkRecipe 定义饮品材料顺序,DialogueGenerator 根据材料生成客人台词,让玩家从表达中解析真正需求。
  • Prefab / 场景配置回归:后期将部分运行时生成逻辑改回 Unity 场景和 Prefab 配置,降低集中控制器带来的维护成本。

技术难点与解决方案

  • 排程结算复杂:材料、扫把、补货、酒杯和需求超时都在同一执行队列里结算。我用 BartendingMiniGameController 管理 Start/Edit/Running/GameOver 状态,并在每个槽位执行后统一检查需求状态。
  • 时间限制不公平:早期随机截止时间可能导致任务理论上无法完成。后续改为根据需求执行成本计算预计完成时间,再生成截止时间。
  • 需求状态不够表达业务:只记录限制时间无法处理完成、失败、清理需求和客人反馈。我改为完整需求对象,只对未完成且未失败的需求进行超时扣分。
  • AI 生成代码偏离 Unity 工作流:早期实现过度依赖集中控制器和运行时生成对象。后续手动拆分预制体和场景结构,让脚本更多负责规则,表现对象回到 Inspector / Prefab 配置。

项目结果

  • 完成了一个可玩的调酒排程游戏闭环,包含客人生成、需求解析、槽位排程、材料消耗、饮品合成、清理、补货、计分和失败流程。
  • 将“信号”主题同时落在玩法和叙事上:玩家解析客人的需求信号,老板通过远程信号操控机器人。
  • 通过这次项目总结出更清晰的 Unity Jam 工作流:先明确场景对象、Prefab 和组件边界,再让 AI 辅助补充脚本。

相关链接


作品集
https://yaoyablog.xyz/2026/05/25/unity/作品集/
作者
Yaoyawen
发布于
2026年5月25日
许可协议