docs(design): 交互系统执行案与项目文档整理
- 新增交互系统执行案 (P-002a),含层级状态模型、行为规则、边界情况 - 新增概念草案 concept.md、头脑风暴记录 - 新增 Agent 配置 (策划/PM/程序) 及角色记忆 - 新增 P-002 质量门审查报告、任务汇报、工作日志 - 更新路线图、current.md 等项目计划文档 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
# 头脑风暴:千禧年前后科技与生活元素灵感
|
||||
|
||||
> 日期:2026-06-04
|
||||
> 性质:素材收集,作为未来版本的备用开发内容
|
||||
> 参与者:starmen1265、策划 Agent
|
||||
|
||||
---
|
||||
|
||||
## 讨论目标
|
||||
|
||||
收集 2000 年前后城郊结合区的科技、通讯、电子产品等时代元素,作为游戏世界观填充和未来版本的内容储备。不急于决定如何游戏化,重点是捕捉记忆中的画面和细节。
|
||||
|
||||
---
|
||||
|
||||
## 一、通讯设备
|
||||
|
||||
### 1.1 大哥大 → 功能机过渡期
|
||||
- 大哥大(砖头手机)正在没落
|
||||
- 黑白屏数字功能机开始兴起(如诺基亚类机型)
|
||||
- BP机(寻呼机)也在走下坡路
|
||||
|
||||
### 1.2 电话座机
|
||||
- **按键式**和**转盘式**座机都用过(两种并存)
|
||||
- 子母机/无绳电话在当时较少见
|
||||
- 座机是家庭主要通讯工具
|
||||
|
||||
> **游戏化灵感**:座机可作为可交互物品——接电话、打电话给NPC?BP机响了要找座机回拨的场景?
|
||||
|
||||
---
|
||||
|
||||
## 二、电视机
|
||||
|
||||
### 2.1 品牌与档次
|
||||
- **高端**:日立(Hitachi)——进口品牌,代表"有钱人家"
|
||||
- **中端**:熊猫——国产经典品牌,很多家庭的选择
|
||||
- **即将流行**:TCL、长虹——液晶显示器即将取代 CRT
|
||||
|
||||
### 2.2 搜台体验
|
||||
- **无信号**:纯雪花屏,发出"呲呲"的白噪声
|
||||
- **信号弱**:一半雪花+不太清晰的画面和声音,画面有滚动条纹干扰
|
||||
- **手动调天线**:信号不好时要站起来手动调整天线方向
|
||||
- **串台奇遇**:有时候能串台串到别人家打 FC 游戏!但画面一般不太清楚
|
||||
|
||||
### 2.3 功能
|
||||
- 电视机有**自动搜台**和**手动搜台**两种模式
|
||||
- 爷爷奶奶家用的是**带天线**的彩电
|
||||
|
||||
> **游戏化灵感**:搜台可以作为交互玩法——转动旋钮/按按钮跳台,经过不同频道看到不同画面(动画片、新闻、雪花)。串台发现别人在打 FC 游戏可以作为彩蛋事件。
|
||||
|
||||
---
|
||||
|
||||
## 三、电脑与上网
|
||||
|
||||
### 3.1 拨号上网(ADSL猫)
|
||||
- 需要主动拨号连接
|
||||
- 拨号时发出**"嘀嘀嘀嘀"**的标志性声音
|
||||
- **与电话共用线路**:上网时电话占线,打不进来
|
||||
|
||||
### 3.2 电脑硬件
|
||||
- **软盘**仍在使用
|
||||
- 已有**光驱和光盘**
|
||||
- **15寸 CRT 显示器**
|
||||
|
||||
### 3.3 早期互联网
|
||||
- **西祠胡同**(BBS 论坛)
|
||||
- **新浪聊天室**
|
||||
- **QQ** 开始兴起
|
||||
- **MUD**(文字冒险游戏)流行
|
||||
|
||||
> **游戏化灵感**:拨号上网的声音和等待过程可以做成体验式交互——听到"嘀嘀嘀"后等待连接,期间电话打不进来(可能错过重要电话事件?)。电脑可以浏览简化版的西祠胡同/聊天室。
|
||||
|
||||
---
|
||||
|
||||
## 四、盗版光盘文化
|
||||
|
||||
### 4.1 珠江路买碟经历
|
||||
- **珠江路**(南京电子一条街)路边很多人偷偷卖盗版碟片
|
||||
- 走过路过就会问"要不要碟?"
|
||||
- 你要的话,他就带你**走街串巷**,进到一户人家
|
||||
- 拿出几个**敞口大箱子**,里面都是**纸壳包装的盗版光碟**
|
||||
|
||||
### 4.2 价格与质量
|
||||
- **3-5 元一张**
|
||||
- 质量堪忧:**三张就有一张读不出来**,或者装不上游戏
|
||||
- 即使装上了,可能**玩到某个地方就报错**
|
||||
|
||||
> **游戏化灵感**:这整段经历本身就是一个完整的游戏事件——路边被叫住→跟着走街串巷(可以做成路径探索)→翻箱子挑碟→花钱买碟→回家试碟(随机结果:正常/读不出/装上但中途报错)。天然带有随机性和探索乐趣。价格 3-5 元也符合游戏中零花钱系统的设计。
|
||||
|
||||
---
|
||||
|
||||
## 五、街机厅
|
||||
|
||||
### 5.1 省币策略
|
||||
- 小孩经常**站在后面看别人玩**,因为这样省币(也叫**牌子**)
|
||||
- 围观本身也是一种社交——看高手打、学习连招
|
||||
|
||||
### 5.2 跟老板儿子搞好关系
|
||||
- 街机厅老板有儿子,跟老板儿子关系好的话
|
||||
- 他会直接从机台底下**取出收币的篮子**,里面装了很多币
|
||||
- **免费玩**!小孩子之间的人情世故
|
||||
|
||||
> **游戏化灵感**:可以做成社交关系系统——和老板儿子的好感度达到一定程度后解锁"免费街机"福利。围观别人打街机也可以作为观察/学习的小玩法。
|
||||
|
||||
---
|
||||
|
||||
## 六、磁带与收音机
|
||||
|
||||
### 6.1 磁带
|
||||
- 磁带相对**比较贵**,一般拿来**收藏**,不瞎折腾
|
||||
- 不像现在可以随便单曲循环,听磁带是有仪式感的
|
||||
|
||||
### 6.2 收音机(日常陪伴)
|
||||
- 日常生活中更多是**听收音机**
|
||||
- 有时候晚上会**开着收音机睡觉**,听睡着了
|
||||
- 第二天收音机**电池没电了**
|
||||
- 深夜经常有**谈话节目**,情感夜话类
|
||||
- 主持人声音比较**磁性、温柔**,很容易听睡着
|
||||
|
||||
### 6.3 南京本地电台(千禧年时代标志)
|
||||
- **FM104.3** —— 有一档节目叫**《子夜聊斋》**,聊鬼故事的!
|
||||
- **FM105.8** —— 南京音乐台,每半个小时就会播报一次台标:
|
||||
> *"南京 Music Radio,调频 105.8;南京 Music Radio,调频 105.8,南京音乐台!"*
|
||||
|
||||
> **游戏化灵感**:收音机可以作为房间里的可交互物品——不同时段调到不同频率听到不同内容(白天音乐、晚上鬼故事/夜话)。FM104.3鬼故事可以做成深夜胆量挑战事件。电池消耗机制:忘记关收音机→电池耗尽→要去买新电池。南京本地电台的具体频率和台标词增强地域真实感。
|
||||
|
||||
---
|
||||
|
||||
## 七、小卖部与电子玩具
|
||||
|
||||
### 7.1 电子宠物(拓麻歌子)
|
||||
- 电子宠物属于**比较稀缺**的玩具
|
||||
- **不好借到**,因为借给别人容易把电子小鸡**养死**
|
||||
- 小孩子之间有"借了就要负责养好"的隐性契约
|
||||
|
||||
> **游戏化灵感**:电子宠物可以作为稀有收集品/社交道具——拥有它是一种"地位象征",借给别人有风险。养死的后果可以做成有趣的叙事事件。
|
||||
|
||||
---
|
||||
|
||||
## 八、电子词典(文曲星)
|
||||
|
||||
### 8.1 隐藏游戏
|
||||
- 文曲星里有隐藏游戏**《英雄传说》**
|
||||
- 有个经典的"骚操作":可以**找根绳子把自己吊死**来重开游戏
|
||||
- 名义上在学习,实际上在偷偷玩游戏
|
||||
|
||||
> **游戏化灵感**:文曲星可以作为道具——表面是学习工具,实际有隐藏小游戏。可以做成"在家长面前假装学习,实际在玩游戏"的紧张感玩法。
|
||||
|
||||
---
|
||||
|
||||
## 九、学校电脑课(已跳过)
|
||||
|
||||
- 机房在当时属于**贵重资产**,进去都要**套鞋套**
|
||||
- 一般情况进不去,不适合拿来作为暑假元素
|
||||
- **结论:不纳入游戏暑假场景**
|
||||
|
||||
---
|
||||
|
||||
## 十、小学生搞钱方式(除日常零花钱外)
|
||||
|
||||
> 2026-06-05 补充讨论
|
||||
|
||||
### 10.1 捡废品卖钱
|
||||
- 可收集的废品种类:
|
||||
- **易拉罐**
|
||||
- **啤酒瓶**
|
||||
- **旧报纸**
|
||||
- **废铁丝**
|
||||
- **牙膏皮**(挤完的铝制牙膏管,专门攒了卖)
|
||||
- 攒一攒拿到**废品站**换钱
|
||||
- 收入大概:攒一波能卖 **5-8 元**(对小孩子的购买力来说相当可观)
|
||||
|
||||
> **游戏化灵感**:可以作为探索+收集+经济的复合玩法——在场景中散落可拾取的废品,攒够一定数量去废品站卖。牙膏皮这种冷门废品可以作为"隐藏收集品"。价格可以设计为每次随机波动(模拟废品行情),增加重玩性。5-8元的收入正好够买一张盗版碟或几次街机。
|
||||
|
||||
### 10.2 帮爸妈有偿做家务
|
||||
- 家务活可以换零花钱
|
||||
- 千禧年家长的常见做法:洗碗、扫地、擦桌子等明码标价
|
||||
|
||||
> **游戏化灵感**:可以作为每日/每周重复任务——接受家务委托→完成后获得零花钱。不同家务难度不同、报酬不同。可以设计为"主动找爸妈要活干"的交互。
|
||||
|
||||
### 10.3 代写作业
|
||||
- 小学生之间的"地下经济"
|
||||
- 帮同学代写作业换零花钱
|
||||
|
||||
> **游戏化灵感**:可以作为社交系统的一环——NPC同学找你代写作业,接受后消耗时间获得报酬,但有"被老师发现"的风险事件。也可以反过来,花钱请别人代写(省时间但有风险)。
|
||||
|
||||
---
|
||||
|
||||
## 已完成 & 待展开
|
||||
|
||||
### ✅ 已完成
|
||||
- [x] 通讯设备(大哥大、功能机、BP机、座机)
|
||||
- [x] 电视机(品牌、搜台、串台)
|
||||
- [x] 电脑与上网(ADSL拨号、软盘/光驱、早期互联网)
|
||||
- [x] 盗版光盘文化(珠江路买碟)
|
||||
- [x] 街机厅(省币围观、老板儿子)
|
||||
- [x] 磁带与收音机(收藏、夜话电台、南京本地频率)
|
||||
- [x] 小卖部与电子玩具(电子宠物)
|
||||
- [x] 电子词典(文曲星隐藏游戏)
|
||||
- [x] 学校电脑课(已跳过,不适合暑假场景)
|
||||
- [x] 小学生搞钱方式(捡废品、有偿家务、代写作业)
|
||||
|
||||
---
|
||||
|
||||
## 十一、不需要玩具的户外游戏
|
||||
|
||||
> 2026-06-05 补充记录
|
||||
|
||||
千禧年前后小孩子聚在一起就能玩的游戏,零成本、纯社交:
|
||||
|
||||
| 游戏 | 简述 |
|
||||
|------|------|
|
||||
| **丢沙包** | 两人投掷沙包,中间的人躲闪,被砸中就出局 |
|
||||
| **老鹰捉小鸡 / 警察抓小偷** | 一人当老鹰/警察抓,一人当母鸡/队长保护,后面拖一串"小鸡" |
|
||||
| **木头人** | "一二三木头人!"——口令停就要定住不动,动了就被抓 |
|
||||
| **斗鸡** | 抬起一条腿,单腿蹦着互相撞,谁先放下脚或倒下就输 |
|
||||
| **躲猫猫** | 经典捉迷藏,找地方藏起来 |
|
||||
| **翻花绳** | 用一根绳子在手指间翻出各种花样,两人交替翻 |
|
||||
| **石头剪刀布** | 万能决策工具,也是游戏本身(猜拳赌东西、决定先后手) |
|
||||
|
||||
> **游戏化灵感**:这些都可以作为和NPC小孩互动的触发方式——走到操场上或巷子里遇到一群小孩在玩,加入进去。不同游戏对应不同的迷你玩法(反应力、策略、运气)。也是建立NPC友谊的手段——"一起玩过"提升好感度。
|
||||
|
||||
### ✅ 已完成(续)
|
||||
- [x] 不需要玩具的户外游戏(丢沙包、老鹰捉小鸡、木头人、斗鸡、躲猫猫、翻花绳、石头剪刀布)
|
||||
|
||||
### 🔮 待展开(未来灵感补充)
|
||||
- [ ] 小卖部的更多细节(零食、小玩具种类)
|
||||
- [ ] 四驱车、悠悠球、陀螺等具体玩具
|
||||
- [ ] 街机厅具体有哪些游戏(拳皇?三国战纪?)
|
||||
- [ ] 其他南京本地化的生活元素
|
||||
- [ ] 小学生花钱的方向(零食、玩具、游戏、文具等消费场景)
|
||||
@@ -0,0 +1,438 @@
|
||||
# 交互系统执行案(v0.1 原型)
|
||||
|
||||
> 最后更新:2026-06-05
|
||||
> 状态:待程序评审
|
||||
|
||||
---
|
||||
|
||||
## 迭代记录
|
||||
|
||||
| 版本 | 日期 | 变更内容 | 作者 |
|
||||
|------|------|----------|------|
|
||||
| v0.1.0 | 2026-06-05 | 初版执行案,覆盖四类交互的完整行为规则 | 策划 Agent |
|
||||
| v0.1.1 | 2026-06-05 | 重构状态模型为层级状态(Free/Interacting/SubSystem/Cutscene),Detecting 降为 Free 检测标记,AnimLock 降为 Interacting 子阶段,新增 postAction 分叉机制 | 策划 Agent |
|
||||
|
||||
---
|
||||
|
||||
## 系统概述
|
||||
|
||||
交互系统让玩家通过接近并按键的方式与环境中的物体、NPC 产生互动。v0.1 原型包含四种交互类型:观察、拾取、操作、对话(简化版)。
|
||||
|
||||
### 核心设计决定(已确认)
|
||||
|
||||
1. **交互中断行为:输入锁定** — 交互进行中,移动输入被忽略,玩家必须按 E 或 ESC 主动关闭交互后才能恢复自由移动。
|
||||
2. **多交互物重叠:自动最近 + 按键切换** — 默认显示最近的交互物提示,按 Tab 或鼠标滚轮切换到范围内下一个可交互物。
|
||||
3. **动画期间输入:全程锁定** — 任何交互动画播放期间忽略所有按键输入,动画必须自然播完才接受新输入。
|
||||
|
||||
---
|
||||
|
||||
## 状态定义
|
||||
|
||||
系统采用层级状态模型,顶层状态 4 个,角色同一时刻只能处于其中一个顶层状态。
|
||||
|
||||
### 顶层状态
|
||||
|
||||
| 状态名 | 说明 |
|
||||
|--------|------|
|
||||
| Free | 自由状态,可正常移动。内部维护检测标记,当角色在交互物触发范围内时检测标记激活,显示提示 UI |
|
||||
| Interacting | 正在进行交互,所有移动输入被忽略。内部分为三个子阶段(见下文) |
|
||||
| SubSystem | 子系统状态(v0.1 预留),角色进入小游戏、对话系统等子系统的状态 |
|
||||
| Cutscene | 过场动画状态(v0.1 预留),播放不可跳过/可跳过的剧情演出 |
|
||||
|
||||
### Interacting 子阶段
|
||||
|
||||
Interacting 状态内部分为以下子阶段,按顺序流转:
|
||||
|
||||
| 子阶段 | 说明 |
|
||||
|--------|------|
|
||||
| Enter | 交互进入阶段:角色自动转向、相机推镜等过渡动画 |
|
||||
| AnimLock / Active | 动画锁定或活跃阶段:AnimLock 表示动画播放中所有按键输入被忽略;Active 表示等待玩家输入(如文本显示完毕等待按 E/ESC 关闭) |
|
||||
| Exit | 交互退出阶段:相机回位、UI 淡出等收尾动画 |
|
||||
|
||||
### Free 状态的检测标记
|
||||
|
||||
Free 状态内部维护一个「检测标记」(isInDetectionRange),不作为独立状态,而是 Free 状态下的布尔标记:
|
||||
|
||||
- 检测标记 = true:角色处于一个或多个交互物的触发范围内,显示提示 UI
|
||||
- 检测标记 = false:角色不在任何交互物触发范围内,无提示 UI
|
||||
|
||||
---
|
||||
|
||||
## 状态转换规则
|
||||
|
||||
### 顶层状态转换
|
||||
|
||||
```
|
||||
Free ──(E 键触发交互)──→ Interacting
|
||||
Interacting ──(交互结束)──→ Free [postAction: return]
|
||||
Interacting ──(交互结束)──→ SubSystem [postAction: minigame / dialogue / sceneChange]
|
||||
SubSystem ──(子系统退出)──→ Free
|
||||
Cutscene ──(演出结束)──→ Free
|
||||
```
|
||||
|
||||
v0.1 仅实现 Free ↔ Interacting 双向转换。SubSystem 和 Cutscene 在状态模型层面已定义,v0.1 不实现具体行为。
|
||||
|
||||
### Free 状态内部的检测标记转换
|
||||
|
||||
```
|
||||
检测标记 false → true:角色进入任意交互物的触发范围
|
||||
检测标记 true → false:角色离开所有交互物的触发范围
|
||||
```
|
||||
|
||||
检测标记的切换不改变顶层状态(始终为 Free),仅控制提示 UI 的显示/隐藏。
|
||||
|
||||
### Interacting 子阶段转换
|
||||
|
||||
```
|
||||
Enter → AnimLock/Active:进入阶段完成后,根据交互类型进入动画锁定或活跃阶段
|
||||
AnimLock → Active:动画自然播完,进入等待玩家输入阶段(如适用)
|
||||
AnimLock → Exit:动画自然播完且无需玩家输入(如拾取类),直接进入退出阶段
|
||||
Active → Exit:玩家按下 E/ESC 触发关闭
|
||||
Exit → Free/SubSystem:退出阶段完成后,根据 postAction 回到 Free 或进入 SubSystem
|
||||
```
|
||||
|
||||
### 交互结束后的 postAction 分叉
|
||||
|
||||
交互结束后根据 postAction 参数决定去向:
|
||||
|
||||
| postAction | 目标 | 说明 |
|
||||
|------------|------|------|
|
||||
| return | Free | 交互结束后直接回到自由状态 |
|
||||
| minigame | SubSystem | 交互结束后进入小游戏(v0.1 预留) |
|
||||
| dialogue | SubSystem | 交互结束后进入对话系统(v0.1 预留) |
|
||||
| sceneChange | SubSystem | 交互结束后触发场景切换(v0.1 预留) |
|
||||
|
||||
v0.1 所有交互的 postAction 均为 return。
|
||||
|
||||
---
|
||||
|
||||
## 行为规则
|
||||
|
||||
### 通用规则(所有交互类型共用)
|
||||
|
||||
#### 触发条件
|
||||
|
||||
- 角色与交互物的距离 ≤ 触发半径(建议值:1.5m,可调,范围 1.0-3.0m)
|
||||
- 角色当前处于 Free 状态
|
||||
- 交互物未被消耗(oneShot 且已触发过的交互物不再响应)
|
||||
|
||||
#### 提示 UI 显示规则
|
||||
|
||||
**进入范围时**:
|
||||
- 角色进入交互物触发范围 → 该交互物上方浮现提示 UI,淡入时长 0.2 秒(建议值,可调,范围 0.1-0.5 秒)
|
||||
- 提示格式:`[E] 动作词 物体名`(例:`[E] 查看旧冰箱`)
|
||||
- 提示位置:物体上方的屏幕空间投影
|
||||
|
||||
**多个交互物在范围内时**:
|
||||
- 仅显示当前选中交互物的提示 UI,其余交互物不显示提示
|
||||
- 默认选中距离角色最近的交互物
|
||||
- 距离判定点:角色脚底中心到交互物注册点的水平距离
|
||||
- 玩家按 Tab 键或鼠标滚轮向下 → 切换到范围内下一个可交互物(按距离从近到远排序,循环切换)
|
||||
- 玩家按鼠标滚轮向上 → 切换到范围内上一个可交互物(反向循环)
|
||||
- 切换时提示 UI 立即更新为新选中物体的信息,无过渡动画
|
||||
|
||||
**离开范围时**:
|
||||
- 角色离开某交互物的触发范围 → 若该交互物为当前选中物体,切换为范围内下一个最近的交互物;若范围内无其他交互物,提示 UI 淡出(0.2 秒,可调)
|
||||
- 若离开的非当前选中物体,提示 UI 不变
|
||||
|
||||
#### 交互触发规则
|
||||
|
||||
- 玩家在 Free 状态下(检测标记为 true 时)按 E 键 → 触发当前选中交互物的交互
|
||||
- 触发后系统进入 Interacting 状态
|
||||
- Interacting 状态下:
|
||||
- 移动输入(WASD、方向键、摇杆)被忽略,角色不移动
|
||||
- Tab 键、鼠标滚轮被忽略,不切换交互物
|
||||
- E 键和 ESC 键的行为取决于具体交互类型(见下文)
|
||||
|
||||
#### 交互结束规则
|
||||
|
||||
- 交互结束后系统回到 Free 状态(v0.1 所有交互的 postAction 均为 return)
|
||||
- 若角色仍在某交互物的触发范围内,回到 Free 状态的同时检测标记激活,立即显示提示 UI
|
||||
- 若角色已不在任何交互物触发范围内(交互中角色不移动,仅因 oneShot 交互物被消耗导致范围内无交互物),回到 Free 状态且检测标记为 false
|
||||
|
||||
---
|
||||
|
||||
### 交互类型一:观察(Examine)
|
||||
|
||||
**用途**:查看物品或场景,触发主角的内心独白。
|
||||
|
||||
#### 触发条件
|
||||
- 通用触发条件满足
|
||||
- 交互物类型为 examine
|
||||
|
||||
#### 触发后行为(按时间顺序)
|
||||
|
||||
| 阶段 | 时间 | 行为 |
|
||||
|------|------|------|
|
||||
| 1. 转向 | 0 秒 | 角色自动转向交互物(面朝交互物方向),转向时长 0.2 秒(建议值,可调,范围 0.1-0.4 秒) |
|
||||
| 2. 推镜 | 0 秒(与转向同时开始) | 相机从当前第三人称位置平滑推向交互物前方约 0.8-1.0m(建议值,可调,范围 0.5-2.0m),高度略低于交互物中心(微仰视),推镜时长 0.5 秒(建议值,可调,范围 0.3-1.0 秒),ease-out 缓动 |
|
||||
| 3. 等待 | 推镜结束后 0.2 秒 | 无动作,间隔等待 |
|
||||
| 4. 文本显示 | 等待结束后 | 屏幕底部浮现内心独白文本框,半透明黑色背景(透明度 60%,可调,范围 40%-80%),白色文字,打字机效果逐字显示(每字间隔 0.05 秒,可调,范围 0.03-0.08 秒;一个汉字为一个单位) |
|
||||
| 5. 用户控制 | 文本全部显示完毕后 | 玩家可按 E 或 ESC 关闭文本框 |
|
||||
|
||||
#### 关闭行为
|
||||
- 玩家按 E 或 ESC → 文本框淡出(0.2 秒,可调,范围 0.1-0.5 秒)→ 相机从推镜位置回到默认第三人称位置(0.3 秒,可调,范围 0.2-0.5 秒,ease-in 缓动)→ 进入 Exit 子阶段 → 回到 Free 状态
|
||||
|
||||
#### 文本显示期间的按键行为
|
||||
- 文本仍在打字机效果中(未全部显示)时:E 键和 ESC 键被忽略(Interacting 的 AnimLock 子阶段)
|
||||
- 文本全部显示后:E 键和 ESC 键可触发关闭(Interacting 的 Active 子阶段)
|
||||
|
||||
#### 可重复交互
|
||||
- oneShot 为 false 的观察类交互物可反复交互
|
||||
- 每次触发的叙事文本从该交互物的文本列表中随机选取(不重复上一次的内容;若文本列表只有一条则每次显示同一条)
|
||||
|
||||
---
|
||||
|
||||
### 交互类型二:拾取(Pick Up)
|
||||
|
||||
**用途**:收集场景中散落的小物品。
|
||||
|
||||
#### 触发条件
|
||||
- 通用触发条件满足
|
||||
- 交互物类型为 pickup
|
||||
- 该交互物未被拾取(oneShot 且已触发过则不再响应)
|
||||
|
||||
#### 触发后行为(按时间顺序)
|
||||
|
||||
| 阶段 | 时间点 | 行为 |
|
||||
|------|--------|------|
|
||||
| 1. 转向 | 0 秒 | 角色自动转向交互物方向,转向时长 0.2 秒(建议值,可调,范围 0.1-0.4 秒) |
|
||||
| 2. 动画 | 转向完成后 | 角色播放弯腰拾取动画(总时长约 1.0 秒,建议值,可调,范围 0.8-1.5 秒),进入 Interacting 的 AnimLock 子阶段 |
|
||||
| 3. 物品消失 | 动画播放至"手触碰物品"时间点(约为动画总时长的 60% 位置,可调,范围 50%-70%) | 交互物从场景中消失 |
|
||||
| 4. 提示弹出 | 物品消失后 0.1 秒 | 屏幕右上角弹出物品获得提示(物品图标 + 物品名称),提示显示 1.5 秒(可调,范围 1.0-3.0 秒)后自动淡出 |
|
||||
| 5. 计数更新 | 物品消失同时 | 该类型的收集计数 +1 |
|
||||
| 6. 自动结束 | 动画自然播完 | 系统回到 Free 状态 |
|
||||
|
||||
#### 关闭行为
|
||||
- 拾取交互不支持手动关闭,必须等待动画自然播完
|
||||
- 动画期间所有按键输入被忽略(Interacting 的 AnimLock 子阶段)
|
||||
|
||||
#### 相机行为
|
||||
- 拾取全程相机保持当前第三人称位置,不推镜、不移动
|
||||
|
||||
#### 一次性消耗
|
||||
- 拾取类交互物均为 oneShot,拾取后永久消失
|
||||
- 消失后该交互物的触发范围不再生效,角色走过原位置不会触发提示
|
||||
|
||||
---
|
||||
|
||||
### 交互类型三:操作(Operate)
|
||||
|
||||
**用途**:与场景设施或大型物体交互。
|
||||
|
||||
v0.1 包含两种操作子类型,行为规则分别定义。
|
||||
|
||||
#### 子类型 3A:门(开/关切换)
|
||||
|
||||
##### 触发条件
|
||||
- 通用触发条件满足
|
||||
- 交互物类型为 operate,子类型为 door
|
||||
|
||||
##### 触发后行为(按时间顺序)
|
||||
|
||||
| 阶段 | 时间点 | 行为 |
|
||||
|------|--------|------|
|
||||
| 1. 转向 | 0 秒 | 角色自动转向门的方向,转向时长 0.2 秒(建议值,可调,范围 0.1-0.4 秒) |
|
||||
| 2. 动画 | 转向完成后 | 角色播放伸手推/拉门动画(总时长约 0.8 秒,可调,范围 0.5-1.2 秒),进入 Interacting 的 AnimLock 子阶段 |
|
||||
| 3. 状态切换 | 动画播放至"手触碰门"时间点(约为动画总时长的 40% 位置,可调) | 门的状态切换(关→开,或开→关),门的视觉表现立即更新 |
|
||||
| 4. 自动结束 | 动画自然播完 | 系统回到 Free 状态 |
|
||||
|
||||
##### 相机行为
|
||||
- 门操作全程相机保持当前第三人称位置,不推镜
|
||||
|
||||
##### 可重复交互
|
||||
- 门可反复操作,每次切换开关状态
|
||||
- 提示文字根据当前状态变化:门为关闭状态时显示 `[E] 打开门`,门为打开状态时显示 `[E] 关上门`
|
||||
|
||||
#### 子类型 3B:废纸箱(翻找)
|
||||
|
||||
##### 触发条件
|
||||
- 通用触发条件满足
|
||||
- 交互物类型为 operate,子类型为 search
|
||||
|
||||
##### 触发后行为(按时间顺序)
|
||||
|
||||
| 阶段 | 时间点 | 行为 |
|
||||
|------|--------|------|
|
||||
| 1. 转向 | 0 秒 | 角色自动转向纸箱方向,转向时长 0.2 秒(建议值,可调) |
|
||||
| 2. 推镜 | 0 秒(与转向同时) | 相机推向纸箱前方约 0.6m(建议值,可调,范围 0.4-1.0m),推镜时长 0.5 秒(可调,范围 0.3-1.0 秒),ease-out 缓动 |
|
||||
| 3. 动画 | 转向完成后 | 角色播放弯腰翻找动画(总时长约 1.5 秒,可调,范围 1.0-2.0 秒),进入 Interacting 的 AnimLock 子阶段 |
|
||||
| 4. 结果显示 | 动画自然播完后 | 屏幕底部弹出翻找结果文本(与观察类文本框样式相同),内容从该纸箱的结果列表中按顺序显示(首次翻找显示第一条,第二次显示第二条,依此类推;列表显示完毕后显示"什么都没有了") |
|
||||
| 5. 用户控制 | 文本全部显示后 | 玩家按 E 或 ESC 关闭文本框 |
|
||||
|
||||
##### 关闭行为
|
||||
- 文本显示完毕后按 E 或 ESC → 文本淡出(0.2 秒)→ 相机回到默认第三人称位置(0.3 秒)→ 回到 Free 状态
|
||||
|
||||
##### 可重复交互
|
||||
- 纸箱可反复翻找,直到结果列表显示完毕
|
||||
- 结果列表显示完毕后,再次翻找始终显示"什么都没有了"
|
||||
- 如果翻找结果中包含拾取品,在该条结果显示的同时执行拾取逻辑(计数 +1、物品获得提示弹出)
|
||||
|
||||
---
|
||||
|
||||
### 交互类型四:对话(Talk)— v0.1 简化版
|
||||
|
||||
**用途**:与场景中的 NPC 交谈。v0.1 为简化实现,NPC 视为"会说话的观察对象"。
|
||||
|
||||
#### 触发条件
|
||||
- 通用触发条件满足
|
||||
- 交互物类型为 talk
|
||||
|
||||
#### 触发后行为
|
||||
|
||||
与观察类型(Examine)完全一致,唯一区别:叙事文本为场景描述而非内心独白。
|
||||
|
||||
- 相机推向 NPC → 底部浮现场景描述文本 → 按 E/ESC 关闭 → 相机回位
|
||||
|
||||
#### 可重复交互
|
||||
- NPC 可反复交谈
|
||||
- 每次触发的场景描述文本从该 NPC 的文本列表中随机选取(不重复上一次;列表只有一条则每次相同)
|
||||
|
||||
---
|
||||
|
||||
## 边界情况处理
|
||||
|
||||
### 快速连续按键
|
||||
- 任何交互触发后,在 Interacting 的 AnimLock 子阶段所有按键输入被忽略
|
||||
- 交互结束回到 Free 状态后才能再次按 E 触发新交互
|
||||
- 不存在"连续按 E 触发多次交互"的可能
|
||||
|
||||
### 交互物被消耗后范围残留
|
||||
- oneShot 交互物被消耗后,其触发范围立即失效
|
||||
- 若消耗后角色附近无其他交互物,系统回到 Free 状态,检测标记置为 false
|
||||
- 若消耗后角色附近仍有其他交互物,系统保持在 Free 状态,检测标记保持为 true,自动选中最近的可用交互物
|
||||
|
||||
### 推镜期间角色位置
|
||||
- 推镜期间移动输入被忽略,角色不移动
|
||||
- 推镜完成后角色仍在原位置,相机回到默认第三人称位置时以角色当前位置为基准
|
||||
|
||||
### 角色在交互进行中被强制位移(外部因素)
|
||||
- v0.1 无物理碰撞推力系统,不存在此情况
|
||||
- 若后续版本加入外部位移力(如爆炸、传送),需要额外定义中断规则,v0.1 不处理
|
||||
|
||||
### 同一交互物反复进出范围
|
||||
- 角色反复进出某交互物的触发范围 → 提示 UI 每次进入时淡入、离开时淡出,无累积副作用
|
||||
- 不产生"多次进入导致提示叠加"的问题,因为提示 UI 始终只显示当前选中物体的一条
|
||||
|
||||
### 切换交互物时按 E
|
||||
- 按 Tab 或滚轮切换选中物体的瞬间,如果玩家恰好同时按 E → 以切换完成后的新选中物体为准
|
||||
- 即:先完成切换,再判定 E 键按下时的选中物体
|
||||
|
||||
### 交互物距离恰好等于触发半径
|
||||
- 距离 ≤ 触发半径 → 在范围内
|
||||
- 距离 > 触发半径 → 不在范围内
|
||||
- 恰好在边界上视为在范围内
|
||||
|
||||
---
|
||||
|
||||
## 跨系统交互
|
||||
|
||||
### 与角色控制系统的关系
|
||||
- 交互进行中(Interacting 状态及其子阶段),角色控制系统接收"交互中"信号,忽略所有移动输入
|
||||
- 交互结束后,角色控制系统恢复正常输入响应
|
||||
- 角色面朝方向的自动转向由交互系统控制,不由角色控制系统控制
|
||||
|
||||
### 与收集系统的关系
|
||||
- 拾取类交互触发后,交互系统通知收集系统"物品 ID +1"
|
||||
- 收集系统负责维护收集计数和物品获得提示 UI
|
||||
- 纸箱翻找结果中包含拾取品时,同样通知收集系统
|
||||
|
||||
### 与 UI 系统的关系
|
||||
- 交互提示 UI 由交互系统控制显示/隐藏/切换
|
||||
- 叙事文本 UI 由交互系统控制显示/内容/关闭
|
||||
- 物品获得提示 UI 由收集系统控制(不在交互系统执行案范围内)
|
||||
|
||||
---
|
||||
|
||||
## v0.1 交互物清单(按实现阶段)
|
||||
|
||||
### 第一轮:系统验证(5 个)
|
||||
|
||||
覆盖全部 4 种交互类型,验证核心流程。
|
||||
|
||||
| # | 物体名 | 交互类型 | 区域 | 验证目标 |
|
||||
|---|--------|----------|------|----------|
|
||||
| 1 | 旧冰箱 | 观察 | 家 | 室内大件观察,推镜 + 内心独白 |
|
||||
| 2 | 家的门 | 操作(门) | 家 | 门开关状态切换 |
|
||||
| 3 | 散落的弹珠 | 拾取 | 空地 | 拾取完整流程 |
|
||||
| 4 | 公用电话亭 | 观察 | 街道 | 室外独立物体观察 |
|
||||
| 5 | 小卖部老板 | 对话(简化) | 小卖部 | NPC 交互 |
|
||||
|
||||
**探索路线**:家(冰箱 → 门)→ 街道(电话亭)→ 小卖部(老板)→ 空地(弹珠)
|
||||
|
||||
### 第二轮:体验填充(5 个)
|
||||
|
||||
验证多交互物并存、不同物体形态的差异。
|
||||
|
||||
| # | 物体名 | 交互类型 | 区域 | 补什么体验 |
|
||||
|---|--------|----------|------|------------|
|
||||
| 6 | 老式电视 | 观察 | 家 | 同区域第二件观察物 |
|
||||
| 7 | 零食货架 | 观察 | 小卖部 | 矮物体推镜角度 |
|
||||
| 8 | 水浒卡碎片 | 拾取 | 空地 | 第二个拾取品 |
|
||||
| 9 | 墙上的涂鸦 | 观察 | 街道 | 墙面类物体 |
|
||||
| 10 | 废纸箱 | 操作(翻找) | 巷子 | 第二种操作类型 |
|
||||
|
||||
---
|
||||
|
||||
## 可调参数汇总
|
||||
|
||||
| 参数 | 建议值 | 可调范围 | 说明 |
|
||||
|------|--------|----------|------|
|
||||
| 触发半径 | 1.5m | 1.0-3.0m | 每个交互物可独立设置 |
|
||||
| 提示 UI 淡入时长 | 0.2 秒 | 0.1-0.5 秒 | |
|
||||
| 提示 UI 淡出时长 | 0.2 秒 | 0.1-0.5 秒 | |
|
||||
| 角色转向时长 | 0.2 秒 | 0.1-0.4 秒 | |
|
||||
| 推镜距离(观察类) | 0.8-1.0m | 0.5-2.0m | 根据交互物体型调整 |
|
||||
| 推镜距离(翻找类) | 0.6m | 0.4-1.0m | |
|
||||
| 推镜时长 | 0.5 秒 | 0.3-1.0 秒 | |
|
||||
| 推镜后等待 | 0.2 秒 | 0.1-0.5 秒 | 推镜结束到文本开始显示的间隔 |
|
||||
| 相机回位时长 | 0.3 秒 | 0.2-0.5 秒 | |
|
||||
| 文本背景透明度 | 60% | 40%-80% | |
|
||||
| 打字机每字间隔 | 0.05 秒 | 0.03-0.08 秒 | 一个汉字为一个单位 |
|
||||
| 文本淡出时长 | 0.2 秒 | 0.1-0.5 秒 | |
|
||||
| 拾取动画总时长 | 1.0 秒 | 0.8-1.5 秒 | |
|
||||
| 物品消失时间点(动画进度) | 60% | 50%-70% | 动画播放到此比例时物品消失 |
|
||||
| 物品获得提示显示时长 | 1.5 秒 | 1.0-3.0 秒 | |
|
||||
| 门操作动画时长 | 0.8 秒 | 0.5-1.2 秒 | |
|
||||
| 门状态切换时间点(动画进度) | 40% | 30%-50% | |
|
||||
| 翻找动画时长 | 1.5 秒 | 1.0-2.0 秒 | |
|
||||
|
||||
---
|
||||
|
||||
## 叙事文本示例
|
||||
|
||||
### 观察类
|
||||
|
||||
**旧冰箱**:
|
||||
> 夏天的时候最期待打开冰箱的那一刻。
|
||||
> 冰棒、西瓜、偶尔还有一瓶健力宝。
|
||||
> 现在想起来,那个冰箱的嗡嗡声好像还在耳边。
|
||||
|
||||
**公用电话亭**:
|
||||
> 街角的公用电话亭,玻璃上贴满了小广告。
|
||||
> 以前打个电话要排半天队,现在好像没人用了。
|
||||
|
||||
**老式电视**:
|
||||
> 家里的大脑袋电视,拍两下就能出画面。
|
||||
> 有时候信号不好,得去转天线。
|
||||
|
||||
**零食货架**:
|
||||
> 货架上摆满了五毛钱的零食。
|
||||
> 辣条、干脆面、还有那种一毛钱两颗的糖。
|
||||
|
||||
**墙上的涂鸦**:
|
||||
> 不知道是谁画的,但画得还挺像奥特曼的。
|
||||
> 我以前也想在墙上画,被我妈追着打了半条街。
|
||||
|
||||
### 对话类(简化)
|
||||
|
||||
**小卖部老板**:
|
||||
> 老板正在柜台后面打瞌睡,电视里放着还珠格格。
|
||||
|
||||
### 翻找结果类
|
||||
|
||||
**废纸箱**(按顺序显示):
|
||||
1. > 翻了半天,找到了一张皱巴巴的纸条:上面写着"小明是笨蛋"。
|
||||
2. > 纸箱底下一堆旧报纸,翻到一张去年的电视报。
|
||||
3. > 摸到一个硬硬的东西……是一颗弹珠!(触发拾取:弹珠 +1)
|
||||
4. > 什么都没有了。
|
||||
Reference in New Issue
Block a user