Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

时之舞者

记录一次行动,与过去的自己完成下一步。

3D 叙事解谜 · Unity / C# · Technical Design

观看完整 PV · 实机视频与作品集 · 架构详解 · 版本证据

《时之舞者》围绕“与过去的自己协作”展开:玩家录制一段行动,返回起点,再部署具有物理交互能力的影子。影子沿记录重演,参与压力板、激光和谐振水晶,让玩家逐步从分工解谜走向同步共舞

本仓库是项目的源码阅读与技术展示版:公开 76 份项目业务 C# 脚本、架构说明与精选代码差异,重点展示技术策划如何把体验目标转译为动作语义、回放管线和机关交互边界。

完整实机请从上方视频入口观看。场景、美术、音频、字体、第三方插件与原 Git 历史均未包含在本仓库中,因此本仓库不能直接作为完整 Unity 工程运行。公开范围

项目 内容
背景 2025 米哈游游戏策划大赛团队项目
本人职责 白糖 / Elysugar:主策划与技术策划,玩法及关卡设计、核心机制验证与部分 Gameplay 实现、协作对接
团队 白糖:主策 / 技术策划;呤幽:主美;grise0:程序
技术 Unity 2022.3、C#、Rigidbody、FSM、Command、事件通知、DOTween
内容 三个主要关卡;原始设计预算约 16 分钟
展示 作品集已有实机视频;代码核对与运行验证边界见验证记录

一个机制,三层关系

体验阶段 玩家在做什么 设计意图
异步协作 让影子占住机关,自己通过道路 理解“过去的行动可以帮助现在”
掩护与节奏 利用影子和周期环境,安排通过时机 从使用工具转向依赖伙伴
同步共舞 与影子在同一区域完成关键动作 把时间协作转化为叙事高潮

以上是关卡组织与体验目标。既有实机负责展示实现表现;关于理解、失败归因和情绪体验的下一轮观察,见设计思考草案

技术亮点

01 · 用两类命令表达“如何移动”和“何时行动”

连续运动与瞬时动作有不同的含义。MoveCommand 保存速度、角速度、朝向与动画状态;ActionCommand 表达 Jump / Land 等离散动作。两者通过 ITimeBackCommand 进入同一个有序列表,影子顺序执行,遇到运动命令后等待下一次物理更新。

这让同步机关能够监听“跳跃发生了”,而不用把“角色正在空中”当成同一件事。新增动作时,可以沿动作类型、录制点、回放消费端逐步接入。

实现边界: 当前是运动状态重演与动作事件回放;没有逐帧位置纠偏,也没有独立动作时间戳调度器。

Command 数据与执行 · 录制 / 回放管线

02 · 用动作发生的时间差判定同步

玩家执行动作时通知当前水晶;影子进入水晶区域后,水晶订阅影子的动作事件。双方动作发生时记录 Time.time,再比较时间差,成功后驱动机关与表现。

判定时机与动作语义直接对应,省去了为了同步判定而持续查询动作状态的需要。窗口也是关卡参数:脚本和 prefab 默认 0.2 秒,第三关四个场景水晶实际配置为 0.5 秒

HarmonicCrystal · 玩家跳跃接入

03 · 为临时影子显式释放机关占用

影子可能在仍踩着压力板、挡着激光时结束回放。CloneC.outCloneCheck() 在停用影子前遍历接触记录,为已知机关移除占用、恢复表现,并解除水晶动作订阅。

这个处理把“影子结束”与“世界恢复”连起来。当前采用直接组件分支,新增机关仍需要补充退出处理;它提供了具体恢复路径,完整中断覆盖见验证清单。

影子生命周期

架构速览

flowchart LR
    P["Player / FSM"] -->|"FixedUpdate 运动采样"| M["MoveCommand"]
    P -->|"动作发生"| A["ActionCommand"]
    M --> Q["有序命令列表"]
    A --> Q
    Q --> R["TimeBackManager 顺序回放"]
    R --> C["Clone / Rigidbody / Animator"]
    P -->|"直接通知当前水晶"| H["HarmonicCrystal 时间差判定"]
    C -->|"OnActionExecuted"| H
    C -->|"碰撞与触发"| W["压力板 / 桥 / 激光"]
    H -->|"机关事件与表现"| W
    C -->|"退出前显式清理"| W
Loading

完整项目的场景编排使用 GameManager、关卡脚本和 EventCenter;角色行为通过 FSM 组织;回放控制集中在 TimeBackManager。运动命令负责恢复刚体状态,动作命令负责派发逻辑动作,具体交互效果由机关消费。

架构详解包含实际调用顺序、状态边界和扩展取舍。

从哪里读代码

Assets/Code/
├── Player/          角色控制、状态机、动作通知
├── TimeBack/        命令数据、录制、回放、影子退出
├── 交互物品/        水晶、平台、压力板、桥梁、激光
├── Manager/         场景、事件、音频、UI 管理
└── Editor/          对话与文本相关编辑器工具
docs/                架构、审阅证据、验证、设计思考、贡献说明
└── evidence/        精选业务代码差异,不含原 Git 历史

阅读与展示

  1. 先观看 PV 或作品集中的实机,理解“录制 → 部署 → 世界交互”。
  2. 阅读 TimeBackCommand.csTimeBackManager.cs,定位命令数据和回放顺序。
  3. 阅读 HarmonicCrystal.csCloneC.cs,追踪动作判定与退出清理。
  4. 对照架构文档和精选 diff,理解当前实现、演化入口与保留的取舍。

完整项目采用 Unity 2022.3;原工程审阅版本为 2022.3.62f1c1。公开脚本依赖 Unity API、DOTween、TextMesh Pro 等组件及场景绑定;这些依赖和资产没有打包为可运行工程。下表说明视频中的操作。

操作 输入
移动 / 跳跃 WASD / Space
交互 F
开始 / 停止录制 Tab;录制上限 5 秒
部署影子 E;录制结束后、影子未激活时
暂停 Esc

验证状态: 本轮在原工程中完成源码、场景配置与 Git 历史核对,并检查公开资料的链接和发布范围;未重新运行 Unity 构建或完整试玩。已有视频展示历史实机表现,未建立其与本次文档提交的精确版本映射。已知限制与待验证项

继续阅读

项目作为团队作品展示。第三方组件、字体、音频及美术资源各自保留其原有权利;本仓库未授予全工程统一的再分发许可。

About

Time Dancer | Unity 3D narrative puzzle: motion recording, physical clone replay and action synchronization. Technical design portfolio with architecture and evidence.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages