docs(review): P-008交互系统程序设计质量门审查通过+美术调研+工作流完善
- P-008 交互系统技术设计审查通过,审查记录 docs/plans/reviews/P-008-review.md - D-001 关卡执行案审查通过,审查记录 docs/plans/reviews/D-001-review.md - 新增 AI 美术调研参考图(我的暑假/放学后少年/真实场景/美术风格) - 新增关卡执行案、白模搭建指南和搭建报告 - 完善工作流技能:质量门审查、Agent记忆、需求分析 - 更新交互系统和角色控制系统技术设计文档 - 清理过时参考文档
This commit is contained in:
@@ -42,6 +42,7 @@
|
||||
| [player-controller-execution.md](player-controller-execution.md) | 角色控制 | v0.1.1 | 📝 设计中 |
|
||||
| [interaction-system-execution.md](interaction-system-execution.md) | 交互系统 | v0.1.2 | 📝 设计中 |
|
||||
| [collection-system-execution.md](collection-system-execution.md) | 收集系统 | v0.1.1 | 📝 设计中 |
|
||||
| [level-v01-suburban-execution.md](level-v01-suburban-execution.md) | 关卡(城郊小街白盒) | v0.1 | 📝 设计中 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,586 @@
|
||||
# v0.1 关卡执行案 — 城郊小街
|
||||
|
||||
## 迭代记录
|
||||
|
||||
| 迭代版本 | 修改日期 | 状态 | 说明 |
|
||||
|----------|----------|------|------|
|
||||
| v0.1 | 2026-06-07 | 📝 设计中 | 初始版本,覆盖 7 区域完整空间布局 |
|
||||
| v0.1.1 | 2026-06-07 | 📝 设计中 | 修正 7 处 BarricadeWall→BarrierWall 资产名;修正 Z3-S09 方向描述 |
|
||||
|
||||
> 状态标记:📝 设计中 | 🔄 开发中 | ✅ 已同步
|
||||
|
||||
---
|
||||
|
||||
## 一、场景参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 场景总尺寸 | 8000cm × 6000cm(80m × 60m) | UE5 单位(1 uu = 1 cm) |
|
||||
| 地面高度基准 | Z = 0 | 统一地面平面高度 |
|
||||
| 主角身高 | ~120cm | 影响门高、窗台高、摄像机高度 |
|
||||
| 主角视角高度 | ~100cm | 摄像机距地面(SpringArm 高度参考) |
|
||||
| 时间设定 | 夏日午后 15:00 | 光照方向:从西南照射,仰角约 45°(建议值,可调) |
|
||||
| 坐标系原点 | 场景西南角地平面 | X 轴向东(+),Y 轴向北(+),Z 轴向上(+) |
|
||||
|
||||
**坐标系说明**:
|
||||
- 区域级定位使用**场景绝对坐标**(原点在西南角,单位 cm)
|
||||
- 区域内物件使用**相对于该区域西南角的偏移坐标**(0,0 为区域西南角)
|
||||
- 偏移格式:(ΔX, ΔY, ΔZ),ΔX 向东为正,ΔY 向北为正,ΔZ 向上为正
|
||||
|
||||
**场景氛围参考**:场景设计案 `scene-v01-suburban.md`
|
||||
|
||||
---
|
||||
|
||||
## 二、区域坐标布局
|
||||
|
||||
### 2.1 区域总览表
|
||||
|
||||
| 区域编号 | 区域名称 | 绝对坐标范围 (X,Y) | 尺寸 (宽×深) | 地面材质建议 | 标识色 |
|
||||
|---------|---------|-------------------|-------------|-------------|--------|
|
||||
| Z1 | 家 | (0,0)→(1000,800) | 10m × 8m | 水泥院地 | MI_DevRed |
|
||||
| Z2 | 小卖部 | (1000,200)→(1600,800) | 6m × 6m | 水泥地+室内瓷砖 | MI_DevOrange |
|
||||
| Z3 | 主街道 | (0,800)→(5000,1300) | 50m × 5m | 灰色水泥路 | MI_DevGray |
|
||||
| Z4 | 空地 | (3500,1300)→(5000,2500) | 15m × 12m | 硬黄土+杂草 | MI_DevBrown |
|
||||
| Z5 | 巷子 | (2300,1300)→(2600,3300) | 3m × 20m | 青砖石板 | MI_DevWhite |
|
||||
| Z6 | 水塘边 | (1600,3300)→(3100,4700) | 15m × 14m | 泥土岸+水面 | MI_DevSkyBlue |
|
||||
| Z7 | 老居民楼 | (5800,200)→(7000,2000) | 12m × 18m | 灰白外墙 | MI_DevGray |
|
||||
|
||||
### 2.2 交通流线
|
||||
|
||||
| 流线路径 | 宽度 | 说明 |
|
||||
|---------|------|------|
|
||||
| Z1 → Z3(家门→街道) | 200cm | 院门直接接主街南沿 |
|
||||
| Z2 → Z3(小卖部→街道) | 200cm | 店门开向主街,门前 2m 遮阳区过渡 |
|
||||
| Z3 → Z4(街道→空地) | 开放 | 街道北墙 X=3500-5000 段开放,直接步入空地 |
|
||||
| Z3 → Z5(街道→巷子) | 300cm | 街道北墙 X=2300-2600 段为巷子入口 |
|
||||
| Z5 → Z6(巷子→水塘边) | 300cm | 巷子北端接水塘南岸 |
|
||||
| Z7 不可到达 | — | 纯背景装饰,碰撞体阻挡 |
|
||||
|
||||
### 2.3 ASCII 总览图
|
||||
|
||||
```
|
||||
Y↑ (北)
|
||||
│
|
||||
4700 ┌───────────────────────────────────────────────────────┐
|
||||
│ 北边界 (围挡) │
|
||||
│ ┌─────────────────────┐ │
|
||||
│ │ Z6 水塘边 │ 北部远景空旷区 │
|
||||
│ │ 15m × 14m │ │
|
||||
3300 │ └──────────┬──────────┘ │
|
||||
│ │ Z5 巷子 3m × 20m │
|
||||
│ │ │
|
||||
│ │ │
|
||||
2500 │ │ ┌──────────────────────┐ │
|
||||
│ │ │ Z4 空地 15m × 12m │ │
|
||||
├──────┬─────────────┴────┤ ├──────┤
|
||||
│ Z1 │ │ Z3 主街道 50m × 5m │ Z7 │
|
||||
│ 家 │ Z3 主街道 │ (街道北侧开放段) │老居 │
|
||||
│10×8m │ (街道西侧段) │ │民楼 │
|
||||
800 │ ├──────────────────┤ │(背景)│
|
||||
│ │ Z2 小卖部 6m×6m │ │ │
|
||||
│ │ │ │ │
|
||||
0 └──────┴──────────────────┴──────────────────────┴──────┘
|
||||
0 1000 1600 3500 5000 5800 7000 8000
|
||||
──────→ X (东)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、逐区域搭建指南
|
||||
|
||||
---
|
||||
|
||||
### Z1:家(Home)
|
||||
|
||||
**区域绝对原点**:(0, 0, 0)
|
||||
|
||||
#### 3.1.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | 0cm | 与场景地面齐平 |
|
||||
| 院墙高度 | 250cm | 红砖围墙,小孩视角无法看穿 |
|
||||
| 院门宽度 | 200cm | 铁门(绿色) |
|
||||
| 院门高度 | 220cm | |
|
||||
| 房屋尺寸 | 600cm × 380cm | 平房主体 |
|
||||
| 室内净高 | 280cm | |
|
||||
| 房屋门宽度 | 100cm | 木门 |
|
||||
| 房屋门高度 | 210cm | |
|
||||
|
||||
#### 3.1.2 结构体清单
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z1-S01 | 南院墙 | 1000×20×250 | (0, 0, 0) | Wall_400x300 × 2 + Wall_200x300 | MI_DevRed |
|
||||
| Z1-S02 | 西院墙 | 20×800×250 | (0, 0, 0) | Wall_400x300 × 2 | MI_DevRed |
|
||||
| Z1-S03 | 东院墙(上半段) | 20×800×250 | (980, 0, 0) | Wall_400x300 × 2 | MI_DevRed |
|
||||
| Z1-S04 | 北院墙(含院门) | 1000×20×250 | (0, 780, 0) | 见下方分段说明 | MI_DevRed |
|
||||
| Z1-S05 | 房屋南墙(含窗) | 600×20×280 | (200, 30, 0) | WallWindow_400x300 + WallWindowSmall_200x300 | MI_DevWhite |
|
||||
| Z1-S06 | 房屋西墙 | 20×380×280 | (200, 30, 0) | Wall_400x300 + Wall_400x100(裁剪) | MI_DevWhite |
|
||||
| Z1-S07 | 房屋东墙 | 20×380×280 | (780, 30, 0) | Wall_400x300 + Wall_400x100(裁剪) | MI_DevWhite |
|
||||
| Z1-S08 | 房屋北墙(含门洞) | 600×20×280 | (200, 410, 0) | WallDoor_200x300 + Wall_400x300 上方补齐 | MI_DevWhite |
|
||||
| Z1-S09 | 房屋屋顶 | 620×400×20 | (190, 25, 280) | Floor_300x400 + Floor_300x400(裁剪) | MI_DevBrown |
|
||||
| Z1-S10 | 院内地板 | 1000×800×1 | (0, 0, 0) | Floor_1000x1000 | MI_DevGray |
|
||||
|
||||
**Z1-S04 北院墙分段说明**(含院门):
|
||||
|
||||
| 段 | 宽度 | 偏移 | BSP 建议 |
|
||||
|----|------|------|---------|
|
||||
| 西侧实墙 | 400cm | (0, 780, 0) | Wall_400x300 |
|
||||
| 院门洞 | 200cm | (400, 780, 0) | WallDoor_200x300 门框 + RotativeDoor_01(MI_DevGreen) |
|
||||
| 东侧实墙 | 400cm | (600, 780, 0) | Wall_400x300 |
|
||||
|
||||
#### 3.1.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z1-P01 | 旧自行车 | 50×170×110 | (100, 650, 0) | Car01 缩放至约 50%,或 Primitives 组合(Cube+Wheel) | 靠西院墙停放,后座铁丝筐用 Cube 替代 |
|
||||
| Z1-P02 | 晾衣杆 | 250×5×180 | (500, 600, 0) | Beam_300 + Cylinder(支撑柱,2 根,ΔZ=0) | 挂衣服用 Cube 薄片替代 |
|
||||
| Z1-P03 | 杂物堆 | 80×80×60 | (850, 100, 0) | WoodenBox_Small × 2 叠放 + Bucket_01 | 东南角 |
|
||||
| Z1-P04 | 门垫 | 60×40×2 | (480, 740, 0) | Cube 缩放为扁薄长方体 | 院门内侧地面 |
|
||||
| Z1-P05 | 老式冰箱 | 60×60×160 | (720, 80, 0) | Barrel 竖放 或 Cube 缩放 | 房屋内东南角,靠东墙 |
|
||||
| Z1-P06 | 大脑袋电视 | 50×40×45 | (320, 80, 45) | Monitor_01 | 房屋内西半部,放在书桌上 |
|
||||
| Z1-P07 | 书桌 | 120×60×75 | (300, 70, 0) | SimpleTable_01 | 房屋内靠西墙 |
|
||||
| Z1-P08 | 床 | 90×190×50 | (350, 250, 0) | BedSingle | 房屋内中部偏南 |
|
||||
| Z1-P09 | 日历 | 30×2×40 | (500, 40, 180) | Cube 薄片 | 挂在房屋南墙内侧 |
|
||||
| Z1-P10 | 电视柜 | 100×45×50 | (320, 55, 0) | SimpleTable_02 缩放 | 电视放在其上(v0.1 可与书桌合并) |
|
||||
|
||||
#### 3.1.4 可交互物体标记
|
||||
|
||||
| 交互编号 | 物件名称 | 交互类型 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 触发半径 (cm) | 引用 |
|
||||
|---------|---------|---------|----------------------|-------------|------|
|
||||
| Z1-I01 | 旧冰箱 | 观察 | (720, 80, 80) | 150 | interaction-system-execution #1 |
|
||||
| Z1-I02 | 家的院门 | 操作(门) | (500, 780, 0) | 150 | interaction-system-execution #2 |
|
||||
| Z1-I06 | 老式电视 | 观察 | (320, 80, 70) | 150 | interaction-system-execution #6 |
|
||||
|
||||
#### 3.1.5 收集品标记
|
||||
|
||||
| 收集编号 | 物品名称 | 稀有度 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 引用 |
|
||||
|---------|---------|--------|----------------------|------|
|
||||
| Z1-C10 | 玻璃弹珠(猫眼) | 稀有 | (870, 140, 0) | collection-system-execution #10 |
|
||||
|
||||
> 位于院子东南角杂物堆旁,金色光标识。
|
||||
|
||||
---
|
||||
|
||||
### Z2:小卖部(Corner Shop)
|
||||
|
||||
**区域绝对原点**:(1000, 200, 0)
|
||||
|
||||
#### 3.2.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | 0cm | |
|
||||
| 建筑尺寸 | 600cm × 400cm | 店面主体 |
|
||||
| 室内净高 | 280cm | |
|
||||
| 前廊/遮阳区 | 600cm × 200cm | 建筑北侧到街道南沿之间的过渡 |
|
||||
| 店门宽度 | 200cm | 卷帘门(白天打开状态) |
|
||||
| 店门高度 | 250cm | |
|
||||
|
||||
#### 3.2.2 结构体清单
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z2-S01 | 南墙 | 600×20×280 | (0, 0, 0) | Wall_400x300 + Wall_200x300 | MI_DevOrange |
|
||||
| Z2-S02 | 西墙 | 20×400×280 | (0, 0, 0) | Wall_400x300 + Wall_400x100(裁剪) | MI_DevOrange |
|
||||
| Z2-S03 | 东墙 | 20×400×280 | (580, 0, 0) | Wall_400x300 + Wall_400x100(裁剪) | MI_DevOrange |
|
||||
| Z2-S04 | 北墙(含门洞) | 600×20×280 | (0, 380, 0) | WallDoorGarage_400x400(裁剪高度)+ Wall_200x300 | MI_DevOrange |
|
||||
| Z2-S05 | 屋顶 | 620×420×20 | (-10, -10, 280) | Floor_300x400 × 2(裁剪) | MI_DevBrown |
|
||||
| Z2-S06 | 地板 | 600×600×1 | (0, 0, 0) | Floor_1000x1000(裁剪) | MI_DevGray |
|
||||
| Z2-S07 | 遮阳棚/前廊顶 | 600×200×10 | (0, 400, 260) | Floor_200x300 × 2 | MI_DevWhite |
|
||||
|
||||
**Z2-S04 北墙分段说明**(白天卷帘门打开状态):
|
||||
|
||||
| 段 | 宽度 | 偏移 | BSP 建议 |
|
||||
|----|------|------|---------|
|
||||
| 西侧实墙 | 200cm | (0, 380, 0) | Wall_200x300 + 上方补齐 |
|
||||
| 门洞 | 200cm | (200, 380, 0) | GarageDoorOpen_01(打开状态) |
|
||||
| 东侧实墙 | 200cm | (400, 380, 0) | Wall_200x300 + 上方补齐 |
|
||||
|
||||
#### 3.2.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z2-P01 | 玻璃柜台 | 200×60×90 | (200, 300, 0) | Cube 缩放为扁长方体 + MI_DevGlassWhite | 店内中偏北,面向门口 |
|
||||
| Z2-P02 | 零食货架(靠东墙) | 90×35×180 | (520, 100, 0) | Fence_Small_400 竖放 × 2 排列 + MI_DevGray | 东墙内侧,多层货架 |
|
||||
| Z2-P03 | 零食货架(靠南墙) | 150×35×180 | (100, 30, 0) | Fence_Small_400 竖放 + MI_DevGray | 南墙内侧 |
|
||||
| Z2-P04 | 老式冰柜 | 100×60×85 | (50, 200, 0) | Cube 缩放 + MI_DevWhite | 西南角,顶盖掀开式 |
|
||||
| Z2-P05 | 小电视 | 30×25×25 | (350, 340, 90) | Monitor_01 缩小 | 放在柜台角落 |
|
||||
| Z2-P06 | 招牌 | 300×5×40 | (150, 410, 280) | Cube 薄片长条 + MI_DevBlue | 北墙外侧上方,蓝底白字"百货" |
|
||||
| Z2-P07 | 卡片架 | 40×20×30 | (400, 350, 0) | Cube 缩放 | 柜台旁地面 |
|
||||
|
||||
#### 3.2.4 可交互物体标记
|
||||
|
||||
| 交互编号 | 物件名称 | 交互类型 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 触发半径 (cm) | 引用 |
|
||||
|---------|---------|---------|----------------------|-------------|------|
|
||||
| Z2-I05 | 小卖部老板 | 对话(简化) | (300, 280, 0) | 200 | interaction-system-execution #5 |
|
||||
| Z2-I07 | 零食货架 | 观察 | (520, 150, 90) | 150 | interaction-system-execution #7 |
|
||||
|
||||
> 老板站在柜台后方;零食货架为靠东墙的货架。
|
||||
|
||||
#### 3.2.5 收集品标记
|
||||
|
||||
| 收集编号 | 物品名称 | 稀有度 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 引用 |
|
||||
|---------|---------|--------|----------------------|------|
|
||||
| Z2-C09 | 小弹力球 | 普通 | (300, 500, 0) | collection-system-execution #9 |
|
||||
|
||||
> 位于店门外前廊地面,白色光标识。
|
||||
|
||||
---
|
||||
|
||||
### Z3:主街道(Main Street)
|
||||
|
||||
**区域绝对原点**:(0, 800, 0)
|
||||
|
||||
> Z3 是开放式区域,无封闭围墙。南北两侧由建筑/围墙/围挡限定边界。
|
||||
|
||||
#### 3.3.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | 0cm | |
|
||||
| 街道宽度 | 500cm | 水泥路面 |
|
||||
| 街道长度 | 5000cm(50m) | |
|
||||
| 南侧建筑/围墙高度 | 250cm | 家和小卖部的院墙/后墙 |
|
||||
| 北侧建筑/围墙高度 | 250cm | 沿街建筑后墙 |
|
||||
|
||||
#### 3.3.2 结构体清单
|
||||
|
||||
**南墙**(街道南侧边界,X=0 到 X=5000,Y=800):
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z3-S01 | 南墙-A段(家院门) | 200cm 宽门洞 | (400, 0, 0) | 与 Z1-S04 院门共享 | — |
|
||||
| Z3-S02 | 南墙-B段(小卖部门面) | 600cm 宽开放 | (1000, 0, 0) | 与 Z2 前廊共享 | — |
|
||||
| Z3-S03 | 南墙-C段 | 2400×20×250 | (1600, 0, 0) | Wall_400x300 × 6 | MI_DevGray |
|
||||
| Z3-S04 | 南墙-D段 | 1000×20×250 | (4000, 0, 0) | Wall_400x300 × 2 + Wall_200x300 | MI_DevGray |
|
||||
|
||||
> 南墙 A 段和 B 段为 Z1 院门和 Z2 店面,不需要额外搭建墙体。C 段(X=1600-4000)和 D 段(X=4000-5000)为空白围墙。
|
||||
|
||||
**北墙**(街道北侧边界,Y=1300):
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z3-S05 | 北墙-A段 | 2300×20×250 | (0, 480, 0) | Wall_400x300 × 5 + Wall_200x300 | MI_DevGray |
|
||||
| Z3-S06 | 北墙-B段(巷子入口) | 300cm 宽开口 | (2300, 480, 0) | 无墙体,开放通行 | — |
|
||||
| Z3-S07 | 北墙-C段 | 900×20×250 | (2600, 480, 0) | Wall_400x300 × 2 + Wall_100x300 | MI_DevGray |
|
||||
| Z3-S08 | 北墙-D段(空地入口) | 1500cm 宽开口 | (3500, 480, 0) | 无墙体,开放通行 | — |
|
||||
| Z3-S09 | 北墙-E段 | 0cm | — | 东端(X=5000)为场景边界围挡 | — |
|
||||
|
||||
> 北墙 A 段(X=0-2300)为封闭围墙,B 段(X=2300-2600)为巷子入口,C 段(X=2600-3500)为封闭围墙,D 段(X=3500-5000)开放至空地。
|
||||
|
||||
**街道地面**:
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z3-S10 | 街道路面 | 5000×500×1 | (0, 0, 0) | Floor_1000x1000 × 5 平铺 | MI_DevGray |
|
||||
|
||||
#### 3.3.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z3-P01 | 公用电话亭 | 80×80×220 | (1800, 380, 0) | Cube+Cylinder 组合 | 街道北侧靠墙 |
|
||||
| Z3-P02 | 老式自行车 | 50×170×110 | (2800, 80, 0) | Car01 缩放 50% | 街道南侧靠墙停放 |
|
||||
| Z3-P03 | 晾衣杆 | 250×5×180 | (1200, 450, 0) | Beam_300 + Cylinder | 街道北侧,伸出墙面的晾衣杆 |
|
||||
| Z3-P04 | 下水道盖 | 60×60×2 | (800, 250, 0) | CirclePlatform 缩小 | 街道路面中央偏西 |
|
||||
| Z3-P05 | 墙上涂鸦区域 | 120×5×80 | (3200, 470, 100) | Cube 薄片 + MI_DevYellow(标识) | 北墙 C 段墙面中部 |
|
||||
| Z3-P06 | 广告墙 | 400×5×150 | (3800, 470, 0) | DisplayPanels_400x200 | 北墙 D 段起始处,手绘广告 |
|
||||
| Z3-P07 | 垃圾桶 | 50×50×80 | (4200, 80, 0) | TrashCans_01 | 街道南侧 |
|
||||
| Z3-P08 | 电线杆(西) | 20×20×600 | (1000, 250, 0) | Cylinder(高缩放) | 街道中轴 |
|
||||
| Z3-P09 | 电线杆(东) | 20×20×600 | (3500, 250, 0) | Cylinder(高缩放) | 街道中轴 |
|
||||
|
||||
#### 3.3.4 可交互物体标记
|
||||
|
||||
| 交互编号 | 物件名称 | 交互类型 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 触发半径 (cm) | 引用 |
|
||||
|---------|---------|---------|----------------------|-------------|------|
|
||||
| Z3-I04 | 公用电话亭 | 观察 | (1800, 380, 110) | 150 | interaction-system-execution #4 |
|
||||
| Z3-I09 | 墙上的涂鸦 | 观察 | (3200, 470, 140) | 150 | interaction-system-execution #9 |
|
||||
|
||||
#### 3.3.5 收集品标记
|
||||
|
||||
| 收集编号 | 物品名称 | 稀有度 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 引用 |
|
||||
|---------|---------|--------|----------------------|------|
|
||||
| Z3-C08 | 弹珠(透明冰花) | 普通 | (820, 260, 0) | collection-system-execution #8 |
|
||||
|
||||
> 位于下水道盖旁,白色光标识。
|
||||
|
||||
---
|
||||
|
||||
### Z4:空地/操场(Vacant Lot)
|
||||
|
||||
**区域绝对原点**:(3500, 1300, 0)
|
||||
|
||||
#### 3.4.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | +10cm | 略高于街道,硬黄土台地感 |
|
||||
| 围墙/遮挡高度 | 无围墙 | 开放区域,东/北/西三面用围挡或自然元素封闭 |
|
||||
| 树木高度 | ~600cm | 中央大梧桐树 |
|
||||
|
||||
#### 3.4.2 结构体清单
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z4-S01 | 地面 | 1500×1200×10 | (0, 0, 0) | Floor_1000x1000 × 2 | MI_DevBrown |
|
||||
| Z4-S02 | 东边界围挡 | 20×1200×200 | (1480, 0, 0) | BarrierWall_600 × 2 | MI_DevBlue |
|
||||
| Z4-S03 | 北边界围挡 | 1500×20×200 | (0, 1180, 0) | BarrierWall_600 × 2 + BarrierWall_200 | MI_DevBlue |
|
||||
| Z4-S04 | 西边界矮墙 | 20×1200×150 | (0, 0, 0) | BarrierWall_200 × 6(矮墙,可翻越感) | MI_DevGray |
|
||||
|
||||
> 南侧无围挡,直接连接主街道。西边界矮墙分隔空地与巷子东侧建筑后墙区域。
|
||||
|
||||
#### 3.4.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z4-P01 | 大梧桐树 | 80×80×600 | (750, 600, 0) | Tree_01 | 空地偏北中央 |
|
||||
| Z4-P02 | 散落砖块 | 40×20×10 × 5 | (200, 300, 0) | WoodenBox_Small × 5 散布 | 空地西半部 |
|
||||
| Z4-P03 | 积水坑 | 120×80×1 | (1100, 200, -5) | Cube 缩放 + MI_DevGlassBlue | 空地东南角,嵌入地面 |
|
||||
| Z4-P04 | 弹珠圈痕迹 | 80×80×1 | (600, 500, 0) | CirclePlatform + MI_DevGray(地面划线) | 空地中偏北,地面上的圆圈 |
|
||||
| Z4-P05 | 废弃建材 | 100×40×30 | (1300, 1000, 0) | WoodenPallet_01 + WoodenBox_Normal | 空地东北角 |
|
||||
|
||||
#### 3.4.4 可交互物体标记
|
||||
|
||||
| 交互编号 | 物件名称 | 交互类型 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 触发半径 (cm) | 引用 |
|
||||
|---------|---------|---------|----------------------|-------------|------|
|
||||
| Z4-I03 | 拾取物-弹珠(蓝色) | 拾取 | (400, 400, 0) | 100 | interaction-system-execution #3 ↔ collection #1 |
|
||||
| Z4-I08 | 拾取物-小石子 | 拾取 | (1050, 250, 0) | 100 | interaction-system-execution #8 ↔ collection #3 |
|
||||
|
||||
#### 3.4.5 收集品标记
|
||||
|
||||
| 收集编号 | 物品名称 | 稀有度 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 引用 |
|
||||
|---------|---------|--------|----------------------|------|
|
||||
| Z4-C01 | 彩色弹珠(蓝色) | 普通 | (400, 400, 0) | collection-system-execution #1 |
|
||||
| Z4-C03 | 小石子 | 普通 | (1050, 250, 0) | collection-system-execution #3 |
|
||||
| Z4-C04 | 水浒卡(鲁智深) | 稀有 | (220, 310, 0) | collection-system-execution #4 |
|
||||
|
||||
> C01 和 C03 同时为交互系统的拾取测试项(Z4-I03、Z4-I08)。C04 在砖块旁,金色光标识。
|
||||
|
||||
---
|
||||
|
||||
### Z5:巷子(Alley)
|
||||
|
||||
**区域绝对原点**:(2300, 1300, 0)
|
||||
|
||||
#### 3.5.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | 0cm | |
|
||||
| 两侧墙壁高度 | 300cm | 高于院墙,营造幽深感 |
|
||||
| 巷子宽度 | 300cm | 仅容一人通行感 |
|
||||
| 巷子长度 | 2000cm(20m) | |
|
||||
|
||||
#### 3.5.2 结构体清单
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z5-S01 | 西墙 | 20×2000×300 | (0, 0, 0) | Wall_400x300 × 5 | MI_DevWhite |
|
||||
| Z5-S02 | 东墙 | 20×2000×300 | (280, 0, 0) | Wall_400x300 × 5 | MI_DevWhite |
|
||||
| Z5-S03 | 地面 | 300×2000×1 | (0, 0, 0) | Floor_1000x1000 × 2 | MI_DevGray |
|
||||
|
||||
#### 3.5.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z5-P01 | 废纸箱 | 50×40×50 | (80, 1600, 0) | WoodenBox_Small | 巷子深处(北段)靠西墙 |
|
||||
| Z5-P02 | 蜘蛛网 | 30×30×1 | (5, 1000, 250) | Cube 薄片 | 西墙高处 |
|
||||
| Z5-P03 | 老窗户(西墙) | 80×10×60 | (10, 800, 150) | FakeWindowsFrame | 西墙中段,不可交互 |
|
||||
| Z5-P04 | 花盆(窗台) | 20×20×25 | (40, 800, 150) | Cylinder 缩小 | 窗台上的花盆 |
|
||||
| Z5-P05 | 青苔地面细节 | 60×40×1 | (100, 1400, 0) | Cube 薄片 + MI_DevFoliage | 巷子北段地面 |
|
||||
|
||||
#### 3.5.4 可交互物体标记
|
||||
|
||||
| 交互编号 | 物件名称 | 交互类型 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 触发半径 (cm) | 引用 |
|
||||
|---------|---------|---------|----------------------|-------------|------|
|
||||
| Z5-I10 | 废纸箱 | 操作(翻找) | (80, 1600, 25) | 150 | interaction-system-execution #10 |
|
||||
|
||||
> 翻找后必定获得「水浒卡(武松)」(collection #7),通过物品系统通知。
|
||||
|
||||
#### 3.5.5 收集品标记
|
||||
|
||||
| 收集编号 | 物品名称 | 稀有度 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 引用 |
|
||||
|---------|---------|--------|----------------------|------|
|
||||
| Z5-C02 | 彩色弹珠(红色花纹) | 普通 | (200, 1700, 0) | collection-system-execution #2 |
|
||||
|
||||
> 巷子深处地面,白色光标识。注意:Z5-C07(水浒卡·武松)包含在废纸箱内,通过翻找获得,不单独放置。
|
||||
|
||||
---
|
||||
|
||||
### Z6:水塘边(Pond)
|
||||
|
||||
**区域绝对原点**:(1600, 3300, 0)
|
||||
|
||||
#### 3.6.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | 0cm(岸) | |
|
||||
| 水面高度 | Z = -20cm | 低于岸边地面 |
|
||||
| 水塘尺寸 | 1200cm × 800cm | 水面区域 |
|
||||
| 岸边宽度 | ~300cm(三面) | 可行走区域 |
|
||||
| 场景边界高度 | 250cm | 北/东边界围挡 |
|
||||
|
||||
#### 3.6.2 结构体清单
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z6-S01 | 水面 | 1200×800×5 | (150, 350, -20) | Floor_1000x1000 + Floor_200x300 | MI_DevSkyBlue |
|
||||
| Z6-S02 | 岸边地面(南) | 1500×350×1 | (0, 0, 0) | Floor_1000x1000 + Floor_200x300 | MI_DevBrown |
|
||||
| Z6-S03 | 岸边地面(东) | 150×800×1 | (1350, 350, 0) | Floor_1000x1000(裁剪) | MI_DevBrown |
|
||||
| Z6-S04 | 岸边地面(西) | 150×800×1 | (0, 350, 0) | Floor_1000x1000(裁剪) | MI_DevBrown |
|
||||
| Z6-S05 | 东边界围挡 | 20×1400×250 | (1480, 0, 0) | BarrierWall_600 × 2 | MI_DevBlue |
|
||||
| Z6-S06 | 北边界围挡 | 1500×20×250 | (0, 1380, 0) | BarrierWall_600 × 2 + BarrierWall_200 | MI_DevBlue |
|
||||
|
||||
> 南面连接巷子出口(Z5 北端),无需围墙。水面不可通行,作为天然北/中边界。
|
||||
|
||||
#### 3.6.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z6-P01 | 芦苇丛(南岸左) | 40×40×100 × 5 | (200, 300, 0) | Cylinder × 5 不同角度 + MI_DevFoliage | 水塘南岸边 |
|
||||
| Z6-P02 | 芦苇丛(南岸右) | 40×40×100 × 5 | (1100, 300, 0) | Cylinder × 5 + MI_DevFoliage | 水塘南岸边 |
|
||||
| Z6-P03 | 芦苇丛(东岸) | 40×40×80 × 3 | (1300, 800, 0) | Cylinder × 3 + MI_DevFoliage | |
|
||||
| Z6-P04 | 荷叶 | 30×30×1 × 4 | (600, 600, -18) | CirclePlatform 缩小 × 4 + MI_DevGreen | 水面上 |
|
||||
| Z6-P05 | 青蛙 | 5×5×4 | (500, 380, 0) | Cube 缩小 + MI_DevGreen | 南岸石头旁 |
|
||||
|
||||
#### 3.6.4 可交互物体标记
|
||||
|
||||
> 水塘边无可交互物体(v0.1 范围)。水塘、青蛙、芦苇为纯布景。
|
||||
|
||||
#### 3.6.5 收集品标记
|
||||
|
||||
| 收集编号 | 物品名称 | 稀有度 | 相对原点偏移 (ΔX,ΔY,ΔZ) | 引用 |
|
||||
|---------|---------|--------|----------------------|------|
|
||||
| Z6-C05 | 糖纸(大白兔) | 普通 | (400, 200, 0) | collection-system-execution #5 |
|
||||
| Z6-C06 | 香味橡皮擦 | 普通 | (900, 150, 0) | collection-system-execution #6 |
|
||||
|
||||
> 均位于南岸地面,白色光标识,间距 ~500cm。
|
||||
|
||||
---
|
||||
|
||||
### Z7:老居民楼(背景装饰)
|
||||
|
||||
**区域绝对原点**:(5800, 200, 0)
|
||||
|
||||
> Z7 为纯背景装饰,不可进入、不可交互。放置 Building_01 为主体,辅以阳台细节。碰撞体包围整栋建筑阻止玩家靠近。
|
||||
|
||||
#### 3.7.1 区域参数
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 地面高度 | 0cm | |
|
||||
| 建筑尺寸 | 1200cm × 600cm(底面) | |
|
||||
| 建筑高度 | ~1800cm(6 层) | |
|
||||
|
||||
#### 3.7.2 结构体清单
|
||||
|
||||
| 编号 | 构件名称 | 尺寸 (宽×深×高, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 标识色 |
|
||||
|------|---------|-------------------|----------------------|-------------|--------|
|
||||
| Z7-S01 | 居民楼主体 | 1200×600×1800 | (0, 0, 0) | Building_01 | MI_DevGray |
|
||||
| Z7-S02 | 碰撞围墙 | 1300×20×250 | (-50, -50, 0) | Wall_400x300 × 3 + Wall_100x300 | MI_DevGray |
|
||||
| Z7-S03 | 碰撞围墙(侧) | 20×700×250 | (-50, -50, 0) | Wall_400x300 × 2 | MI_DevGray |
|
||||
|
||||
#### 3.7.3 布景物清单
|
||||
|
||||
| 编号 | 物件名称 | 尺寸 (约, cm) | 相对原点偏移 (ΔX,ΔY,ΔZ) | BSP 资产建议 | 说明 |
|
||||
|------|---------|-------------|----------------------|-------------|------|
|
||||
| Z7-P01 | 晾衣杆(阳台) | 100×5×5 × 3 | (300, -10, 800) | Beam_300 × 3 | 不同楼层阳台外伸 |
|
||||
| Z7-P02 | 垃圾桶 | 50×50×80 | (200, -60, 0) | TrashCans_01 | 楼下地面 |
|
||||
|
||||
#### 3.7.4 可交互物体标记
|
||||
|
||||
无。Z7 不含任何可交互物体。
|
||||
|
||||
#### 3.7.5 收集品标记
|
||||
|
||||
无。
|
||||
|
||||
---
|
||||
|
||||
## 四、全局物件清单
|
||||
|
||||
> 不属于特定区域的场景物件,使用场景绝对坐标。
|
||||
|
||||
### 4.1 街道家具
|
||||
|
||||
| 编号 | 物件名称 | 数量 | 放置位置 (绝对坐标 X,Y,Z) | BSP 资产建议 | 说明 |
|
||||
|------|---------|------|------------------------|-------------|------|
|
||||
| G-01 | 路灯 | 3 | (1500, 1050, 0)、(3000, 1050, 0)、(4500, 1050, 0) | RoadLamp_01 | 街道中轴线偏南 |
|
||||
| G-02 | 垃圾桶 | 2 | (2000, 850, 0)、(4000, 850, 0) | TrashCans_01 + MI_DevGreen | 街道南侧靠墙 |
|
||||
|
||||
### 4.2 环境物件
|
||||
|
||||
| 编号 | 物件名称 | 数量 | 放置位置 (绝对坐标 X,Y,Z) | BSP 资产建议 | 说明 |
|
||||
|------|---------|------|------------------------|-------------|------|
|
||||
| G-E01 | 电线杆 | 2 | (1000, 1050, 0)、(3500, 1050, 0) | Cylinder(直径 20cm,高 600cm) | 街道中轴,与路灯交错 |
|
||||
| G-E02 | 施工围挡(南边界补充) | — | X=1600-5000, Y=0-200 区域南沿 | BarrierWall_600 + MI_DevBlue | 街道南侧背后的南场景边界 |
|
||||
|
||||
### 4.3 收集品位置汇总
|
||||
|
||||
| # | 物品名称 | 所在区域 | 绝对坐标 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|---------|---------|-----------------|--------|------|
|
||||
| 1 | 彩色弹珠(蓝色) | Z4 空地 | (3900, 1700, 0) | 普通 | collection-system-execution #1 |
|
||||
| 2 | 彩色弹珠(红色花纹) | Z5 巷子 | (2500, 3000, 0) | 普通 | collection-system-execution #2 |
|
||||
| 3 | 小石子 | Z4 空地 | (4550, 1550, 0) | 普通 | collection-system-execution #3 |
|
||||
| 4 | 水浒卡(鲁智深) | Z4 空地 | (3720, 1610, 0) | 稀有 | collection-system-execution #4 |
|
||||
| 5 | 糖纸(大白兔) | Z6 水塘边 | (2000, 3500, 0) | 普通 | collection-system-execution #5 |
|
||||
| 6 | 香味橡皮擦 | Z6 水塘边 | (2500, 3450, 0) | 普通 | collection-system-execution #6 |
|
||||
| 7 | 水浒卡(武松) | Z5 巷子(废纸箱内) | (2380, 2900, 0) | 稀有 | collection-system-execution #7 |
|
||||
| 8 | 弹珠(透明冰花) | Z3 街道 | (820, 1060, 0) | 普通 | collection-system-execution #8 |
|
||||
| 9 | 小弹力球 | Z2 小卖部 | (1300, 700, 0) | 普通 | collection-system-execution #9 |
|
||||
| 10 | 玻璃弹珠(猫眼) | Z1 家 | (870, 140, 0) | 稀有 | collection-system-execution #10 |
|
||||
|
||||
> #7 不在地面放置,包含在废纸箱 Z5-I10 内,通过翻找操作获得。
|
||||
|
||||
---
|
||||
|
||||
## 五、场景边界与遮挡
|
||||
|
||||
| 边界段 | 位置范围 | 遮挡方式 | BSP 资产建议 | 标识色 |
|
||||
|--------|---------|---------|-------------|--------|
|
||||
| 西边界 | X=0, Y=0-6000 全线 | 围墙(与 Z1 西院墙连续向北延伸) | Wall_400x300 拼接 | MI_DevRed |
|
||||
| 南边界 | Y=0, X=0-8000 全线 | 混合:Z1 南院墙 + Z2 后墙 + 施工围挡 + Z7 围墙 | 各区段墙体 + BarricadeWall 补齐 | 各段标识色 |
|
||||
| 东边界 | X=8000, Y=0-6000 | 施工围挡/铁皮围挡 | BarrierWall_600 × 10 | MI_DevBlue |
|
||||
| 北边界 | Y=6000, X=0-8000 | 施工围挡 + 远景面片 | BarrierWall_600 × 13 | MI_DevBlue |
|
||||
| Z6 水域 | 水塘水面 | 不可通行水面(Z=-20cm),物理碰撞阻挡进入 | 无需额外围墙 | MI_DevSkyBlue |
|
||||
|
||||
> 所有边界物体必须启用物理碰撞。自然边界(水塘)通过水面下方放置不可见碰撞体实现。
|
||||
|
||||
---
|
||||
|
||||
## 六、光照建议
|
||||
|
||||
| 光源类型 | 数量 | 位置/方向 | 参数建议 | 说明 |
|
||||
|---------|------|---------|---------|------|
|
||||
| 定向光(Directional Light) | 1 | 从西南方向照射,仰角约 45°(建议值,可调,范围 30°-60°) | 色温:暖白 ~5500K(建议值,可调);强度:中等(建议值,可调) | 夏日午后主光源 |
|
||||
| 天空光(Sky Light) | 1 | 全局 | 强度:低-中(建议值,可调) | 环境补光,避免纯黑阴影 |
|
||||
| 路灯点光源 | 3 | 与 G-01 路灯同位置,高度约 400cm | 暖黄色,强度低(建议值,可调) | v0.1 为装饰性光源,午后光照下几乎不可见 |
|
||||
|
||||
> 光照参数均为建议值,可调。程序根据实际编辑器效果微调方向、色温和强度。
|
||||
|
||||
---
|
||||
|
||||
## 七、Player Start 位置
|
||||
|
||||
| 参数 | 值 | 说明 |
|
||||
|------|-----|------|
|
||||
| 绝对坐标 | (500, 720, 0) | Z1 院内,院门内侧约 60cm |
|
||||
| 朝向 | 向北(+Y 方向) | 面向院门/街道方向 |
|
||||
|
||||
---
|
||||
|
||||
## 八、可调参数汇总
|
||||
|
||||
| 参数 | 建议值 | 可调范围 | 说明 |
|
||||
|------|--------|----------|------|
|
||||
| 院墙高度 | 250cm | 200-300cm | 所有区域院墙/围墙 |
|
||||
| 建筑层高 | 280cm | 260-300cm | 室内净高 |
|
||||
| 街道宽度 | 500cm | 400-600cm | |
|
||||
| 巷子宽度 | 300cm | 200-400cm | |
|
||||
| 水面低于岸边 | 20cm | 10-40cm | |
|
||||
| 边界围挡高度 | 200cm | 150-300cm | 施工围挡 |
|
||||
| 路灯间距 | ~1500cm | 1000-2000cm | |
|
||||
| 交互触发半径 | 150cm | 100-300cm | 每个交互物可独立设置 |
|
||||
| 拾取物触发半径 | 100cm | 80-150cm | 小型地面物品 |
|
||||
@@ -0,0 +1,168 @@
|
||||
# D-001 审查报告
|
||||
|
||||
**审查日期**:2026-06-07
|
||||
**审查对象**:D-001 v0.1 关卡执行案 — 城郊小街 — `docs/design/prototype/level-v01-suburban-execution.md`
|
||||
**审查类型**:③ 执行案质量门(关卡执行案 — 资产存在验证)
|
||||
**宏观阶段**:原型
|
||||
|
||||
---
|
||||
|
||||
## 检查结果
|
||||
|
||||
### A. 资产存在验证(关卡执行案专项)
|
||||
|
||||
#### 标识色材质
|
||||
|
||||
| 引用材质 | 实际存在 | 结果 |
|
||||
|---------|---------|------|
|
||||
| MI_DevRed | ✅ Basics/MI_DevRed | ✅ |
|
||||
| MI_DevOrange | ✅ Basics/MI_DevOrange | ✅ |
|
||||
| MI_DevGray | ✅ Basics/MI_DevGray | ✅ |
|
||||
| MI_DevBrown | ✅ Basics/MI_DevBrown | ✅ |
|
||||
| MI_DevWhite | ✅ Basics/MI_DevWhite | ✅ |
|
||||
| MI_DevSkyBlue | ✅ Basics/MI_DevSkyBlue | ✅ |
|
||||
| MI_DevBlue | ✅ Basics/MI_DevBlue | ✅ |
|
||||
| MI_DevGreen | ✅ Basics/MI_DevGreen | ✅ |
|
||||
| MI_DevFoliage | ✅ Basics/MI_DevFoliage | ✅ |
|
||||
| MI_DevGlassWhite | ✅ Glass/MI_DevGlassWhite | ✅ |
|
||||
| MI_DevGlassBlue | ✅ Glass/MI_DevGlassBlue | ✅ |
|
||||
| MI_DevYellow | ✅ Basics/MI_DevYellow | ✅ |
|
||||
|
||||
> 所有 12 种标识色材质验证通过。
|
||||
|
||||
#### BSP 资产名称验证(按区域)
|
||||
|
||||
**Z1 家** — 全部通过 ✅
|
||||
|
||||
Wall_400x300, Wall_200x300, WallDoor_200x300, RotativeDoor_01, WallWindow_400x300, WallWindowSmall_200x300, Floor_1000x1000, Floor_300x400, Car01, Beam_300, Cylinder, Cube, WoodenBox_Small, Bucket_01, Barrel, Monitor_01, SimpleTable_01, SimpleTable_02, BedSingle
|
||||
|
||||
**Z2 小卖部** — 全部通过 ✅
|
||||
|
||||
Wall_400x300, Wall_200x300, WallDoorGarage_400x400, GarageDoorOpen_01, Floor_1000x1000, Floor_200x300, Fence_Small_400, Monitor_01, Cube
|
||||
|
||||
**Z3 主街道** — 全部通过 ✅
|
||||
|
||||
Wall_400x300, Wall_200x300, Wall_100x300, Floor_1000x1000, Cube, Cylinder, CirclePlatform, DisplayPanels_400x200, TrashCans_01, Car01, Beam_300
|
||||
|
||||
**Z4 空地** — ❌ 有命名错误
|
||||
|
||||
| 编号 | 文档中引用 | 正确名称 | 结果 |
|
||||
|------|-----------|---------|------|
|
||||
| Z4-S02 | BarricadeWall_600 | BarrierWall_600 | ❌ |
|
||||
| Z4-S03 | BarricadeWall_600, BarricadeWall_200 | BarrierWall_600, BarrierWall_200 | ❌ |
|
||||
| Z4-S04 | BarrierWall_200 | BarrierWall_200 | ✅ |
|
||||
|
||||
其他 Z4 资产(Tree_01, WoodenBox_Small, Cube, MI_DevGlassBlue, CirclePlatform, WoodenPallet_01, WoodenBox_Normal, Floor_1000x1000)✅
|
||||
|
||||
**Z5 巷子** — 全部通过 ✅
|
||||
|
||||
Wall_400x300, Floor_1000x1000, WoodenBox_Small, Cube, FakeWindowsFrame, Cylinder
|
||||
|
||||
**Z6 水塘边** — ❌ 有命名错误
|
||||
|
||||
| 编号 | 文档中引用 | 正确名称 | 结果 |
|
||||
|------|-----------|---------|------|
|
||||
| Z6-S05 | BarricadeWall_600 | BarrierWall_600 | ❌ |
|
||||
| Z6-S06 | BarricadeWall_600, BarricadeWall_200 | BarrierWall_600, BarrierWall_200 | ❌ |
|
||||
|
||||
其他 Z6 资产(Floor_1000x1000, Floor_200x300, Cylinder, CirclePlatform, Cube)✅
|
||||
|
||||
**Z7 老居民楼** — 全部通过 ✅
|
||||
|
||||
Building_01, Wall_400x300, Wall_100x300, Beam_300, TrashCans_01
|
||||
|
||||
**全局物件** — ❌ 有命名错误
|
||||
|
||||
| 编号 | 文档中引用 | 正确名称 | 结果 |
|
||||
|------|-----------|---------|------|
|
||||
| G-E02 | BarricadeWall_600 | BarrierWall_600 | ❌ |
|
||||
|
||||
G-01 (RoadLamp_01), G-02 (TrashCans_01) ✅
|
||||
|
||||
**第五章 场景边界** — ❌ 有命名错误
|
||||
|
||||
| 边界段 | 文档中引用 | 正确名称 | 结果 |
|
||||
|--------|-----------|---------|------|
|
||||
| 东边界 | BarricadeWall_600 × 10 | BarrierWall_600 × 10 | ❌ |
|
||||
| 北边界 | BarricadeWall_600 × 13 | BarrierWall_600 × 13 | ❌ |
|
||||
|
||||
西边界、南边界 ✅
|
||||
|
||||
#### BarricadeWall vs BarrierWall 命名错误汇总
|
||||
|
||||
> 两个是不同类型的资产:
|
||||
> - **BarricadeWall_100** = 道路矮路障墙(blockout-asset-reference §VIII)
|
||||
> - **BarrierWall_200/400/600** = 实墙式栏杆/围墙(blockout-asset-reference §I.6)
|
||||
>
|
||||
> 文档中误将 "BarrierWall" 写为 "BarricadeWall",共 **7 处独立引用** 需修正。
|
||||
|
||||
| 位置 | 错误名称 | 应修正为 |
|
||||
|------|---------|---------|
|
||||
| Z4-S02 | BarricadeWall_600 × 2 | BarrierWall_600 × 2 |
|
||||
| Z4-S03 | BarricadeWall_600 × 2 + BarricadeWall_200 | BarrierWall_600 × 2 + BarrierWall_200 |
|
||||
| Z6-S05 | BarricadeWall_600 × 2 | BarrierWall_600 × 2 |
|
||||
| Z6-S06 | BarricadeWall_600 × 2 + BarricadeWall_200 | BarrierWall_600 × 2 + BarrierWall_200 |
|
||||
| 第五章·东边界 | BarricadeWall_600 × 10 | BarrierWall_600 × 10 |
|
||||
| 第五章·北边界 | BarricadeWall_600 × 13 | BarrierWall_600 × 13 |
|
||||
| G-E02 | BarricadeWall_600 | BarrierWall_600 |
|
||||
|
||||
注意:Z4-S04 已正确使用 "BarrierWall_200",说明文档命名不一致。
|
||||
|
||||
---
|
||||
|
||||
### B. 标准执行案检查
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 迭代记录表头 | ✅ | 存在且填写完整 |
|
||||
| 场景参数 | ✅ | 总尺寸、角色身高、视角高度、坐标系定义完整 |
|
||||
| 区域坐标布局 | ✅ | 7 区域总览表 + 交通流线 + ASCII 总览图 |
|
||||
| 逐区域搭建指南 | ✅ | 每区域含结构体/布景/交互物/收集品四类清单 |
|
||||
| 全局物件清单 | ✅ | 街道家具 + 环境物件 + 收集品位置汇总 |
|
||||
| 场景边界与遮挡 | ✅ | 四面边界定义完整,含碰撞说明 |
|
||||
| 光照建议 | ✅ | 3 种光源 + 参数均为建议值可调 |
|
||||
| Player Start | ✅ | 坐标和朝向明确 |
|
||||
| 可调参数汇总 | ✅ | 9 个参数含建议值和可调范围 |
|
||||
| 技术越界检查 | ✅ | 未引用引擎组件名/文件路径/Blueprint 类名 |
|
||||
| 交互物交叉引用 | ✅ | 10/10 交互物正确引用 interaction-system-execution #1-#10 |
|
||||
| 收集品交叉引用 | ✅ | 10/10 收集品正确引用 collection-system-execution #1-#10 |
|
||||
| 跨文档一致性 | ✅ | Z5-I10 明确标注废纸箱翻找→收集 #7 的关联 |
|
||||
|
||||
---
|
||||
|
||||
### C. 轻微问题(非阻塞)
|
||||
|
||||
| # | 问题 | 位置 | 说明 |
|
||||
|---|------|------|------|
|
||||
| 1 | 方向描述文字错误 | Z3-S09 说明栏 | "西端(X=5000)" 应为 "东端"(X=5000 是街道东端)。不影响搭建,但文字有误导性 |
|
||||
| 2 | Z3 北墙坐标微偏差 | Z3 北墙偏移 | Z3 区域范围 Y=800→1300(深 500cm),但北墙相对偏移写 480cm 而非 500cm。差 20cm,由程序搭建时验证 |
|
||||
|
||||
---
|
||||
|
||||
## 判定
|
||||
|
||||
**不通过** — BSP 资产名称错误:文档中 7 处引用 "BarricadeWall_600/200",但 BSP 资产包中实际名称为 "BarrierWall_600/200"。需策划修正后方可通过。
|
||||
|
||||
### 问题清单
|
||||
|
||||
1. **[必须修正]** 将所有 "BarricadeWall_600" 修正为 "BarrierWall_600",将所有 "BarricadeWall_200" 修正为 "BarrierWall_200"。共 7 处引用(见上方汇总表)。参考 `blockout-asset-reference.md` §I.6 栏杆/围栏部分。
|
||||
|
||||
---
|
||||
|
||||
## 复审(2026-06-07)
|
||||
|
||||
**策划修正内容**:
|
||||
- ✅ 7 处 `BarricadeWall_600/200` 全部修正为 `BarrierWall_600/200`
|
||||
- ✅ Z3-S09 方向描述 "西端" → "东端" 已修正
|
||||
- ✅ 迭代记录已追加 v0.1.1 条目
|
||||
|
||||
**残留轻微问题**(非阻塞):
|
||||
|
||||
| # | 问题 | 位置 | 说明 |
|
||||
|---|------|------|------|
|
||||
| 1 | 南边界泛指文本残留 | 第五章·南边界 | "BarricadeWall 补齐" 应为 "BarrierWall 补齐"。该处为汇总表中的泛指描述(无尺寸后缀),不影响搭建 |
|
||||
| 2 | Z3 北墙坐标微偏差 | Z3 北墙偏移 | Z3 区域范围 Y=800→1300(深 500cm),但北墙相对偏移写 480cm。差 20cm,由程序搭建时验证 |
|
||||
|
||||
## 复审判定
|
||||
|
||||
**通过** ✅ — 所有 BSP 资产名称验证通过,文档结构完整,交叉引用正确,未越界技术细节。残留的南边界泛指文本为非阻塞轻微问题。
|
||||
@@ -0,0 +1,88 @@
|
||||
# P-008 审查报告
|
||||
|
||||
**审查日期**:2026-06-07
|
||||
**审查对象**:P-008 v0.1 交互系统 — ④程序设计 — `docs/technical/interaction-system-tech.md`(948 行)
|
||||
**宏观阶段**:原型
|
||||
**质量门类型**:程序设计质量门(④→⑤)
|
||||
**对应执行案**:`docs/design/prototype/interaction-system-execution.md`(v0.1.2)
|
||||
|
||||
---
|
||||
|
||||
## 检查结果
|
||||
|
||||
### 1. 执行案覆盖度
|
||||
|
||||
**结论**:✅ 通过 — 执行案全部行为规则均有对应实现方案,逐条对照无遗漏。
|
||||
|
||||
覆盖范围统计:
|
||||
- 通用规则(17 条):全部覆盖
|
||||
- 观察类(E1-E6):全部覆盖
|
||||
- 拾取类(P1-P8):全部覆盖
|
||||
- 操作-门(D1-D6):全部覆盖
|
||||
- 操作-翻找(S1-S7):全部覆盖
|
||||
- 对话类(K1-K6):全部覆盖
|
||||
- 边界情况(B1-B6):全部覆盖
|
||||
- 跨系统交互(角色控制/物品/UI):全部覆盖
|
||||
- 状态模型(4顶层+子阶段+postAction):完整映射
|
||||
- 18 个可调参数:全部映射到 C++ 属性或蓝图配置
|
||||
|
||||
逐条对照详见审查过程中的映射表(本文件为审查结论,完整逐条映射在审查执行记录中)。
|
||||
|
||||
### 2. 美术资源需求
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 数量 | ✅ | 3 动画蒙太奇 + 2 UMG Widget + 3 InputAction + 1 IMC 追加 + 1 Actor BP |
|
||||
| 规格 | ✅ | 动画有时长,UI 有结构描述,输入有按键映射 |
|
||||
| 触发时机 | ✅ | 每项标注了使用场景和阶段 |
|
||||
| 原型占位方案 | ✅ | 明确标注"可用占位/计时器替代" |
|
||||
| 交互物占位模型 | ✅ | 交叉引用到场景执行案 |
|
||||
|
||||
### 3. 架构清晰度
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 类设计图 | ✅ | Mermaid class diagram,4 新增类 + 2 修改类 + 1 蓝图 |
|
||||
| 关系类型 | ✅ | 组合/聚合/关联逐项说明 |
|
||||
| 挂载方式 | ✅ | UInteractionManager 为 Character 的 UActorComponent |
|
||||
| 新增类职责 | ✅ | 每个类有独立职责说明和文件位置 |
|
||||
| 修改类变更 | ✅ | 每个修改类说明了具体新增内容 |
|
||||
|
||||
### 4. 数据流
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 配置参数流 | ✅ | 编辑器实例 → FInteractableData → 运行时读取 |
|
||||
| 运行时状态流 | ✅ | 输入 → PlayerController → 状态机 → 各模块 |
|
||||
| 检测注册流 | ✅ | 碰撞事件 → 注册 → 排序 → UI 更新 |
|
||||
| 跨系统通信 | ✅ | 委托(物品系统通知)、直接调用、Tick 驱动 |
|
||||
|
||||
### 5. 技术风险
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 风险识别 | ✅ | 5 个风险,分 🟡中/🟢低 两级 |
|
||||
| 缓解措施 | ✅ | 每个风险有具体缓解方案 |
|
||||
| 注意事项 | ✅ | 5 条补充注意事项 |
|
||||
|
||||
### 6. 工作量与拆分建议
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 工作量估算 | ✅ | 5-7 天,600-800 行 C++,3 个蓝图 |
|
||||
| 拆分方式 | ✅ | 6a-6h 共 8 个子任务 |
|
||||
| 独立验证 | ✅ | 每个子任务有明确验证方式 |
|
||||
| 关键路径 | ✅ | 标注了关键路径和并行机会(6d) |
|
||||
|
||||
---
|
||||
|
||||
## 轻微观察(不影响通过)
|
||||
|
||||
1. **推镜高度计算**:`CalculatePushPosition` 中 `TargetPos.Z = InteractPos.Z * 0.8f`,当交互物 Z≈0(地面物体)时推镜高度可能过低。原型阶段可通过调试修正,非 blocking。
|
||||
2. **拾取物通用外观**:执行案提及拾取物用通用模型(球形/方块 0.1m,颜色区分稀有度),技术文档未在美术需求清单中单独列出。这是交互物 Actor 配置而非独立美术资源,可接受。
|
||||
|
||||
---
|
||||
|
||||
## 判定
|
||||
|
||||
**✅ 通过** — 执行案全部行为规则有精确实现方案映射(无遗漏),架构设计清晰(4+2 类,模块职责明确),美术资源需求具体到数量/规格/时机,数据流完整,技术风险识别到位(5 个风险 + 5 条注意事项),实现拆分为 8 个可独立验证的子任务且标注了关键路径。
|
||||
@@ -0,0 +1,79 @@
|
||||
# 关卡执行案审查报告
|
||||
|
||||
**审查日期**:2026-06-07
|
||||
**审查对象**:v0.1 关卡执行案 -- 城郊小街 — `docs/design/prototype/level-v01-suburban-execution.md`
|
||||
**审查依据**:`docs/design/prototype/level-design-workflow.md` 第五章 -- PM 关卡文档质量门检查项
|
||||
**宏观阶段**:原型
|
||||
|
||||
## 审查范围说明
|
||||
|
||||
根据 level-design-workflow.md 第五章,关卡执行案的质量门**仅做资产存在验证**。空间精度、比例、跨文档一致性等维度由程序在白模搭建过程中验证(Phase E),PM 不在质量门阶段检查。
|
||||
|
||||
## 检查结果
|
||||
|
||||
### 5.1 关卡资产存在验证
|
||||
|
||||
#### BSP 资产类别验证
|
||||
|
||||
关卡执行案中共引用 **42 个** BSP 资产类别名(含 Primitives),逐一验证结果如下:
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 墙体类(Wall 系列) | 全部通过 | Wall_400x300、Wall_200x300、Wall_100x300、Wall_400x100、WallDoor_200x300、WallDoorGarage_400x400、WallWindow_400x300、WallWindowSmall_200x300 均存在 |
|
||||
| 地板类(Floor 系列) | 全部通过 | Floor_1000x1000、Floor_300x400、Floor_200x300 均存在 |
|
||||
| 门类(Door 系列) | 全部通过 | RotativeDoor_01、GarageDoorOpen_01 均存在 |
|
||||
| 窗户类(Window 系列) | 全部通过 | FakeWindowsFrame 存在 |
|
||||
| 横梁类(Beam 系列) | 全部通过 | Beam_300 存在 |
|
||||
| 围栏/围挡类 | 全部通过 | BarricadeWall_600、BarricadeWall_200(= BarrierWall_200)、Fence_Small_400 均存在 |
|
||||
| 基础体(Primitives) | 全部通过 | Cube、Cylinder、CirclePlatform 均存在 |
|
||||
| 家具类 | 全部通过 | SimpleTable_01、SimpleTable_02、BedSingle、Monitor_01 均存在 |
|
||||
| 载具/工业/装饰类 | 全部通过 | Car01、Barrel、Bucket_01、WoodenBox_Small、WoodenBox_Normal、WoodenPallet_01、TrashCans_01 均存在 |
|
||||
| 植被/灯光/建筑类 | 全部通过 | Tree_01、RoadLamp_01、Building_01 均存在 |
|
||||
| 展示面板类 | 不通过 | DisplayPanels_300x200 **不存在**(见问题 #1) |
|
||||
|
||||
#### Primitives 组合方案验证
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| Primitives 组合方案合理性 | 全部通过 | 所有标记为 Primitives 组合的替代方案均使用 Cube/Cylinder/CirclePlatform,搭配缩放或标识色材质,方案合理可行 |
|
||||
|
||||
#### 标识色材质验证
|
||||
|
||||
| 检查项 | 结果 | 说明 |
|
||||
|--------|------|------|
|
||||
| 标识色材质范围 | 全部通过 | 引用的 12 种材质(MI_DevRed/Orange/Gray/Brown/White/Blue/SkyBlue/Green/Yellow/Foliage、MI_DevGlassWhite/GlassBlue)均在 14 种基础标识色 + 玻璃材质范围内 |
|
||||
|
||||
## 判定
|
||||
|
||||
**不通过** -- DisplayPanels_300x200 资产不存在,需策划修正引用。
|
||||
|
||||
## 问题清单
|
||||
|
||||
### 问题 #1(必须修正)
|
||||
|
||||
**位置**:Z3-P06 广告墙,第三节 Z3 区域 3.3.3 布景物清单
|
||||
|
||||
**问题**:引用了 `DisplayPanels_300x200`,该尺寸在实际资产目录中**不存在**。
|
||||
|
||||
**实际可用的 DisplayPanels 尺寸**:
|
||||
- SM_DisplayPanels_50x50
|
||||
- SM_DisplayPanels_100x50
|
||||
- SM_DisplayPanels_100x100
|
||||
- SM_DisplayPanels_200x50
|
||||
- SM_DisplayPanels_200x100
|
||||
- SM_DisplayPanels_200x200
|
||||
- SM_DisplayPanels_400x100
|
||||
- SM_DisplayPanels_400x200
|
||||
|
||||
**建议修正方案**(策划选择):
|
||||
1. 改用 `DisplayPanels_400x200` 并相应调整广告墙尺寸参数(宽 300cm -> 400cm),或
|
||||
2. 改用 `DisplayPanels_200x200`(正方形,比例变为 1:1),或
|
||||
3. 改用 Primitives 组合(Cube 薄片 + MI_DevYellow 标识色),保持原尺寸 300cm 宽不变
|
||||
|
||||
## 备注
|
||||
|
||||
本次审查未检查以下维度(由程序在 Phase E 白模搭建过程中验证):
|
||||
- 空间精度与坐标一致性
|
||||
- 比例与尺寸合理性(儿童视角)
|
||||
- 跨文档一致性(交互系统/收集系统执行案的编号对应)
|
||||
- 资产拼接可行性(如"裁剪"标注的实际操作性)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,792 @@
|
||||
# v0.1 白模搭建操作指南 — 城郊小街
|
||||
|
||||
> 本文档为 P-006 任务产出,供在 UE5 编辑器中按步骤搭建白模关卡使用。
|
||||
> 每条指令包含:Actor 命名、资产路径、世界坐标、旋转、缩放、材质。
|
||||
> 最后更新:2026-06-07
|
||||
|
||||
---
|
||||
|
||||
## 〇、全局信息
|
||||
|
||||
### 场景参数
|
||||
|
||||
| 参数 | 值 |
|
||||
|------|-----|
|
||||
| 场景总尺寸 | 8000cm × 6000cm(80m × 60m) |
|
||||
| 地面高度基准 | Z = 0 |
|
||||
| 主角身高 | ~120cm |
|
||||
| 摄像机高度 | ~100cm |
|
||||
| 时间设定 | 夏日午后 15:00 |
|
||||
| 坐标原点 | 场景西南角地平面 |
|
||||
|
||||
### UE5 路径前缀
|
||||
|
||||
- **Mesh**: `Content/BlockingStarterPack/Meshes/`
|
||||
- **Material**: `Content/BlockingStarterPack/Materials/`
|
||||
- **Material (Basics)**: `Content/BlockingStarterPack/Materials/Blocking/Basics/`
|
||||
- **Material (Glass)**: `Content/BlockingStarterPack/Materials/Glass/`
|
||||
- **Material (Light)**: `Content/BlockingStarterPack/Materials/Light/`
|
||||
|
||||
### 命名规范
|
||||
|
||||
```
|
||||
LVL_<ZoneID>_<Category>_<Description>
|
||||
Category: STR | PROP | INTR | COLL | BND | LGT
|
||||
```
|
||||
|
||||
### Outliner 文件夹结构
|
||||
|
||||
```
|
||||
LVL_SuburbanV01/
|
||||
Z1_家/
|
||||
Structure/ Props/ Interactables/ Collectibles/
|
||||
Z2_小卖部/
|
||||
Structure/ Props/ Interactables/ Collectibles/
|
||||
Z3_主街道/
|
||||
Structure/ Props/ Interactables/ Collectibles/
|
||||
Z4_空地/
|
||||
Structure/ Props/ Interactables/ Collectibles/
|
||||
Z5_巷子/
|
||||
Structure/ Props/ Interactables/ Collectibles/
|
||||
Z6_水塘边/
|
||||
Structure/ Props/ Interactables/ Collectibles/
|
||||
Z7_老居民楼/
|
||||
Structure/ Props/
|
||||
Global/
|
||||
Boundaries/ Lighting/ PlayerStart/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 一、BSP 资产映射表
|
||||
|
||||
### 1.1 建筑 — 墙体
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 | 实际尺寸 (cm) |
|
||||
|-------------|-------------|--------------|
|
||||
| Wall_400x300 | `Architecture/Walls/SM_Wall_400x300` | 400×20×300 |
|
||||
| Wall_200x300 | `Architecture/Walls/SM_Wall_200x300` | 200×20×300 |
|
||||
| Wall_100x300 | `Architecture/Walls/SM_Wall_100x300` | 100×20×300 |
|
||||
| Wall_400x100 | `Architecture/Walls/SM_Wall_400x100` | 400×20×100 |
|
||||
| WallDoor_200x300 | `Architecture/Walls/SM_WallDoor_200x300` | 200×20×300 |
|
||||
| WallDoorGarage_400x300 | `Architecture/Walls/SM_WallDoorGarage_400x300` | 400×20×300 |
|
||||
| WallWindow_400x300 | `Architecture/Walls/SM_WallWindow_400x300` | 400×20×300 |
|
||||
| WallWindowSmall_200x300 | `Architecture/Walls/SM_WallWindowSmall_200x300` | 200×20×300 |
|
||||
|
||||
> **注意**:Wall 厚度为 20cm。偏移坐标基于墙面中心点。执行案中偏移基于墙面外表面/内表面,放置时需微调 10cm(半墙厚)。
|
||||
|
||||
### 1.2 建筑 — 地板
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 | 实际尺寸 (cm) |
|
||||
|-------------|-------------|--------------|
|
||||
| Floor_1000x1000 | `Architecture/Floors/SM_Floor_1000x1000` | 1000×1000×10 |
|
||||
| Floor_300x400 | `Architecture/Floors/SM_Floor_300x400` | 300×400×10 |
|
||||
| Floor_200x300 | `Architecture/Floors/SM_Floor_200x300` | 200×300×10 |
|
||||
|
||||
### 1.3 建筑 — 门
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 | 说明 |
|
||||
|-------------|-------------|------|
|
||||
| RotativeDoor_01 | `Architecture/Doors/SM_RotativeDoor_01` | 旋转门 |
|
||||
| GarageDoorOpen_01 | `Architecture/Doors/SM_GarageDoorOpen_01` | 卷帘门(开) |
|
||||
|
||||
### 1.4 建筑 — 窗户
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 | 说明 |
|
||||
|-------------|-------------|------|
|
||||
| FakeWindowsFrame | `Architecture/WindowsSet/SM_FakeWindowsFrame` | 假窗(装饰) |
|
||||
|
||||
### 1.5 建筑 — 围栏/围挡
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 | 实际尺寸 (cm) |
|
||||
|-------------|-------------|--------------|
|
||||
| BarrierWall_600 | `Architecture/Barriers/SM_BarrierWall_600` | 600×20×100 |
|
||||
| BarrierWall_200 | `Architecture/Barriers/SM_BarrierWall_200` | 200×20×100 |
|
||||
| Fence_Small_400 | `Industrials/SM_Fence_Small_400` | 400×5×100 |
|
||||
|
||||
### 1.6 建筑 — 横梁
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| Beam_300 | `Architecture/Beams/SM_Beam_300` |
|
||||
|
||||
### 1.7 建筑 — 大型建筑
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| Building_01 | `BigBuildings/SM_Building_01` |
|
||||
|
||||
### 1.8 家具
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| SimpleTable_01 | `Furnitures/SM_SimpleTable_01` |
|
||||
| SimpleTable_02 | `Furnitures/SM_SimpleTable_02` |
|
||||
| BedSingle | `Bedroom/SM_BedSingle` |
|
||||
| Monitor_01 | `Furnitures/SM_Monitor_01` |
|
||||
|
||||
### 1.9 工业/装饰
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| Barrel | `Industrials/SM_Barrel` |
|
||||
| WoodenBox_Small | `Industrials/SM_WoodenBox_Small` |
|
||||
| WoodenBox_Normal | `Industrials/SM_WoodenBox_Normal` |
|
||||
| WoodenPallet_01 | `Industrials/SM_WoodenPallet_01` |
|
||||
| Bucket_01 | `Decorations/SM_Bucket_01` |
|
||||
| TrashCans_01 | `Trashs/SM_TrashCans_01` |
|
||||
| Container_Normal | `Industrials/SM_Container_Normal` |
|
||||
|
||||
### 1.10 载具
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| Car01 | `Vehicles/SM_Car01` |
|
||||
|
||||
### 1.11 基础体
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| Cube | `Primitives/SM_Cube` |
|
||||
| Cylinder | `Primitives/SM_Cylinder` |
|
||||
| CirclePlatform | `Extra/SM_CirclePlatform` |
|
||||
|
||||
### 1.12 其他
|
||||
|
||||
| 设计文档引用 | UE5 资产路径 |
|
||||
|-------------|-------------|
|
||||
| Tree_01 | `Vegetations/SM_Tree_01` |
|
||||
| RoadLamp_01 | `Lights/SM_RoadLamp_01` |
|
||||
| DisplayPanels_400x200 | `DisplayPanels/SM_DisplayPanels_400x200` |
|
||||
|
||||
### 1.13 标识色材质
|
||||
|
||||
| 材质名 | 路径 |
|
||||
|--------|------|
|
||||
| MI_DevRed | `Materials/Blocking/Basics/MI_DevRed` |
|
||||
| MI_DevOrange | `Materials/Blocking/Basics/MI_DevOrange` |
|
||||
| MI_DevGray | `Materials/Blocking/Basics/MI_DevGray` |
|
||||
| MI_DevBrown | `Materials/Blocking/Basics/MI_DevBrown` |
|
||||
| MI_DevWhite | `Materials/Blocking/Basics/MI_DevWhite` |
|
||||
| MI_DevBlue | `Materials/Blocking/Basics/MI_DevBlue` |
|
||||
| MI_DevGreen | `Materials/Blocking/Basics/MI_DevGreen` |
|
||||
| MI_DevSkyBlue | `Materials/Blocking/Basics/MI_DevSkyBlue` |
|
||||
| MI_DevYellow | `Materials/Blocking/Basics/MI_DevYellow` |
|
||||
| MI_DevFoliage | `Materials/Blocking/Basics/MI_DevFoliage` |
|
||||
| MI_DevPink | `Materials/Blocking/Basics/MI_DevPink` |
|
||||
| MI_DevGlassWhite | `Materials/Glass/MI_DevGlassWhite` |
|
||||
| MI_DevGlassBlue | `Materials/Glass/MI_DevGlassBlue` |
|
||||
|
||||
---
|
||||
|
||||
## 二、Phase A — 准备
|
||||
|
||||
### A3 创建关卡
|
||||
|
||||
1. 在 Content Browser 右键 → `New Level` → `Empty Level`
|
||||
2. 保存到 `Content/Maps/LVL_SuburbanV01.umap`
|
||||
3. World Settings → GameMode Override 选择项目 GameMode(暂无则留空)
|
||||
4. 放置 Player Start Actor:
|
||||
- 位置:(500, 720, 0)
|
||||
- 旋转:(0, 0, 0)(面向 +Y 即北)
|
||||
- 移入 Outliner `Global/PlayerStart/`
|
||||
|
||||
---
|
||||
|
||||
## 三、Phase B — 地面与边界
|
||||
|
||||
### B1 铺设地面
|
||||
|
||||
按区域铺设地面 Floor,使用 Floor_1000x1000 平铺。
|
||||
|
||||
#### Z1 家 地面(MI_DevGray)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z1_STR_Floor | Floor_1000x1000 | (500, 400, 0) | (1, 0.8, 1) |
|
||||
|
||||
> Z1 范围 (0,0)→(1000,800),Floor_1000x1000 中心点 (500,400),Y 方向缩放 0.8 覆盖 800cm。
|
||||
|
||||
#### Z2 小卖部 地面(MI_DevGray)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z2_STR_Floor | Floor_1000x1000 | (1300, 500, 0) | (0.6, 0.6, 1) |
|
||||
|
||||
> Z2 范围 (1000,200)→(1600,800),中心 (1300,500),缩放 (0.6, 0.6) 覆盖 600×600。
|
||||
|
||||
#### Z3 主街道 地面(MI_DevGray)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z3_STR_Floor_01 | Floor_1000x1000 | (500, 1050, 0) | (1, 0.5, 1) |
|
||||
| 2 | LVL_Z3_STR_Floor_02 | Floor_1000x1000 | (1500, 1050, 0) | (1, 0.5, 1) |
|
||||
| 3 | LVL_Z3_STR_Floor_03 | Floor_1000x1000 | (2500, 1050, 0) | (1, 0.5, 1) |
|
||||
| 4 | LVL_Z3_STR_Floor_04 | Floor_1000x1000 | (3500, 1050, 0) | (1, 0.5, 1) |
|
||||
| 5 | LVL_Z3_STR_Floor_05 | Floor_1000x1000 | (4500, 1050, 0) | (1, 0.5, 1) |
|
||||
|
||||
> Z3 范围 (0,800)→(5000,1300),宽度 500cm(Y 缩放 0.5),长度 5000cm(5 块 Floor)。
|
||||
|
||||
#### Z4 空地 地面(MI_DevBrown)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z4_STR_Floor_01 | Floor_1000x1000 | (4000, 1800, 10) | (1.5, 1.2, 1) |
|
||||
|
||||
> Z4 范围 (3500,1300)→(5000,2500),中心 (4250,1900),Z=10(高于街道 10cm)。缩放 (1.5, 1.2) 覆盖 1500×1200。
|
||||
|
||||
#### Z5 巷子 地面(MI_DevGray)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z5_STR_Floor_01 | Floor_1000x1000 | (2450, 1800, 0) | (0.3, 1, 1) |
|
||||
| 2 | LVL_Z5_STR_Floor_02 | Floor_1000x1000 | (2450, 2800, 0) | (0.3, 1, 1) |
|
||||
|
||||
> Z5 范围 (2300,1300)→(2600,3300),宽度 300cm(X 缩放 0.3),长度 2000cm(2 块)。
|
||||
|
||||
#### Z6 水塘边 地面 + 水面
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z6_STR_GroundSouth | Floor_1000x1000 | (2350, 3475, 0) | (1.5, 0.35, 1) | MI_DevBrown |
|
||||
| 2 | LVL_Z6_STR_GroundEast | Floor_1000x1000 | (3075, 4000, 0) | (0.15, 0.8, 1) | MI_DevBrown |
|
||||
| 3 | LVL_Z6_STR_GroundWest | Floor_1000x1000 | (1675, 4000, 0) | (0.15, 0.8, 1) | MI_DevBrown |
|
||||
| 4 | LVL_Z6_STR_Water | Floor_1000x1000 | (2350, 4000, -20) | (1.2, 0.8, 0.5) | MI_DevSkyBlue |
|
||||
|
||||
> Z6 水面中心约 (2350, 4000),Z=-20。岸边三面环绕。
|
||||
|
||||
#### Z7 老居民楼 地面(MI_DevGray)
|
||||
|
||||
> Z7 不需要单独地面地板,Building_01 自带底面。
|
||||
|
||||
### B2 放置边界围挡
|
||||
|
||||
#### 西边界(X=0, Y=0-6000)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 (Pitch,Yaw,Roll) | 材质 |
|
||||
|---|-----------|------|-------------|----------------------|------|
|
||||
| 1 | LVL_BND_West_01 | Wall_400x300 | (0, 200, 0) | (0,0,0) → Yaw=90° | MI_DevRed |
|
||||
| 2 | LVL_BND_West_02 | Wall_400x300 | (0, 600, 0) | (0,90,0) | MI_DevRed |
|
||||
| 3 | LVL_BND_West_03 | Wall_400x300 | (0, 1000, 0) | (0,90,0) | MI_DevRed |
|
||||
| 4 | LVL_BND_West_04 | Wall_400x300 | (0, 1400, 0) | (0,90,0) | MI_DevRed |
|
||||
| 5 | LVL_BND_West_05 | Wall_400x300 | (0, 1800, 0) | (0,90,0) | MI_DevRed |
|
||||
| 6 | LVL_BND_West_06 | Wall_400x300 | (0, 2200, 0) | (0,90,0) | MI_DevRed |
|
||||
| 7 | LVL_BND_West_07 | Wall_400x300 | (0, 2600, 0) | (0,90,0) | MI_DevRed |
|
||||
| 8 | LVL_BND_West_08 | Wall_400x300 | (0, 3000, 0) | (0,90,0) | MI_DevRed |
|
||||
| 9 | LVL_BND_West_09 | Wall_400x300 | (0, 3400, 0) | (0,90,0) | MI_DevRed |
|
||||
| 10 | LVL_BND_West_10 | Wall_400x300 | (0, 3800, 0) | (0,90,0) | MI_DevRed |
|
||||
| 11 | LVL_BND_West_11 | Wall_400x300 | (0, 4200, 0) | (0,90,0) | MI_DevRed |
|
||||
| 12 | LVL_BND_West_12 | Wall_400x300 | (0, 4600, 0) | (0,90,0) | MI_DevRed |
|
||||
| 13 | LVL_BND_West_13 | Wall_400x300 | (0, 5000, 0) | (0,90,0) | MI_DevRed |
|
||||
| 14 | LVL_BND_West_14 | Wall_400x300 | (0, 5400, 0) | (0,90,0) | MI_DevRed |
|
||||
| 15 | LVL_BND_West_15 | Wall_400x300 | (0, 5800, 0) | (0,90,0) | MI_DevRed |
|
||||
|
||||
> Wall_400x300 旋转 90° 后沿 Y 方向排列,每块 400cm 高 × 300cm 长(需纵向排列覆盖 250cm 墙高)。
|
||||
> **实际操作**:Wall_400x300 放置时默认长轴沿 X。Yaw=90° 旋转后长轴沿 Y。但墙高只有 300cm,而围挡只需 250cm,300cm 足够。
|
||||
> **修正**:Wall 默认高度 300cm(Z轴),宽度 400cm(X轴),厚度 20cm(Y轴)。放置在 X=0 处,Yaw=90° 使 400cm 宽度沿 Y 方向。每块覆盖 Y 方向 400cm,15 块覆盖 6000cm。Z 方向 300cm > 250cm 要求,足够。
|
||||
|
||||
#### 东边界(X=8000, Y=0-6000)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1-15 | LVL_BND_East_01~15 | BarrierWall_600 | (8000, 200+400n, 0) n=0~14 | (0,90,0) | MI_DevBlue |
|
||||
|
||||
> BarrierWall_600 默认 600cm 长。旋转 90° 后沿 Y 方向。10 块覆盖 6000cm。
|
||||
> **修正**:BarrierWall_600 高度 100cm,需要堆叠 3 层达到 300cm。改为使用 Wall_400x300 更经济。
|
||||
> 实际建议:使用 Wall_400x300 替代,与西边界相同方式,15 块。
|
||||
|
||||
#### 北边界(Y=6000, X=0-8000)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1-20 | LVL_BND_North_01~20 | Wall_400x300 | (200+400n, 6000, 0) n=0~19 | (0,0,0) | MI_DevBlue |
|
||||
|
||||
> 20 块 Wall_400x300 覆盖 8000cm。
|
||||
|
||||
#### 南边界(Y=0, X=0-8000)
|
||||
|
||||
南边界分段处理:
|
||||
- X=0-1000:Z1 南院墙(已含在 Z1 结构体中)
|
||||
- X=1000-1600:Z2 后墙区域
|
||||
- X=1600-5000:施工围挡
|
||||
- X=5000-8000:补齐围挡
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 材质 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_BND_South_01 | BarrierWall_600 | (1900, 0, 0) | MI_DevBlue |
|
||||
| 2 | LVL_BND_South_02 | BarrierWall_600 | (2500, 0, 0) | MI_DevBlue |
|
||||
| 3 | LVL_BND_South_03 | BarrierWall_600 | (3100, 0, 0) | MI_DevBlue |
|
||||
| 4 | LVL_BND_South_04 | BarrierWall_600 | (3700, 0, 0) | MI_DevBlue |
|
||||
| 5 | LVL_BND_South_05 | BarrierWall_600 | (4300, 0, 0) | MI_DevBlue |
|
||||
| 6 | LVL_BND_South_06 | BarrierWall_600 | (4900, 0, 0) | MI_DevBlue |
|
||||
| 7 | LVL_BND_South_07 | BarrierWall_600 | (5500, 0, 0) | MI_DevBlue |
|
||||
| 8 | LVL_BND_South_08 | BarrierWall_600 | (6100, 0, 0) | MI_DevBlue |
|
||||
| 9 | LVL_BND_South_09 | BarrierWall_600 | (6700, 0, 0) | MI_DevBlue |
|
||||
| 10 | LVL_BND_South_10 | BarrierWall_600 | (7300, 0, 0) | MI_DevBlue |
|
||||
| 11 | LVL_BND_South_11 | BarrierWall_600 | (7900, 0, 0) | MI_DevBlue |
|
||||
|
||||
> BarrierWall_600 需注意高度仅 100cm。建议堆叠 2-3 层达到 200-300cm 视觉高度。
|
||||
> **替代方案**:改用 Wall_400x300 更高效(300cm 高度一次到位)。
|
||||
|
||||
---
|
||||
|
||||
## 四、Phase C — 逐区域搭建
|
||||
|
||||
### 搭建顺序:Z1 → Z3 → Z2 → Z4 → Z5 → Z6 → Z7
|
||||
|
||||
---
|
||||
|
||||
### C1. Z1 — 家(Home)
|
||||
|
||||
**区域绝对原点**:(0, 0, 0)
|
||||
|
||||
#### C1.1 结构体(Structure)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 (P,Y,R) | 缩放 | 材质 |
|
||||
|---|-----------|------|-------------|-------------|------|------|
|
||||
| 1 | LVL_Z1_STR_SouthWall_01 | Wall_400x300 | (200, 0, 0) | (0,0,0) | — | MI_DevRed |
|
||||
| 2 | LVL_Z1_STR_SouthWall_02 | Wall_400x300 | (600, 0, 0) | (0,0,0) | — | MI_DevRed |
|
||||
| 3 | LVL_Z1_STR_WestWall_01 | Wall_400x300 | (0, 200, 0) | (0,90,0) | — | MI_DevRed |
|
||||
| 4 | LVL_Z1_STR_WestWall_02 | Wall_400x300 | (0, 600, 0) | (0,90,0) | — | MI_DevRed |
|
||||
| 5 | LVL_Z1_STR_EastWall_01 | Wall_400x300 | (980, 200, 0) | (0,90,0) | — | MI_DevRed |
|
||||
| 6 | LVL_Z1_STR_EastWall_02 | Wall_400x300 | (980, 600, 0) | (0,90,0) | — | MI_DevRed |
|
||||
| 7 | LVL_Z1_STR_NorthWall_West | Wall_400x300 | (200, 780, 0) | (0,0,0) | — | MI_DevRed |
|
||||
| 8 | LVL_Z1_STR_NorthWall_Gate | WallDoor_200x300 | (500, 780, 0) | (0,0,0) | — | MI_DevRed |
|
||||
| 9 | LVL_Z1_STR_NorthWall_East | Wall_400x300 | (800, 780, 0) | (0,0,0) | — | MI_DevRed |
|
||||
| 10 | LVL_Z1_STR_GateDoor | RotativeDoor_01 | (500, 780, 0) | (0,0,0) | — | MI_DevGreen |
|
||||
| 11 | LVL_Z1_STR_HouseSouthWall | WallWindow_400x300 | (400, 30, 0) | (0,0,0) | — | MI_DevWhite |
|
||||
| 12 | LVL_Z1_STR_HouseSouthWin | WallWindowSmall_200x300 | (600, 30, 0) | (0,0,0) | — | MI_DevWhite |
|
||||
| 13 | LVL_Z1_STR_HouseWestWall | Wall_400x300 | (200, 220, 0) | (0,90,0) | — | MI_DevWhite |
|
||||
| 14 | LVL_Z1_STR_HouseWestTop | Wall_400x100 | (200, 220, 300) | (0,90,0) | — | MI_DevWhite |
|
||||
| 15 | LVL_Z1_STR_HouseEastWall | Wall_400x300 | (780, 220, 0) | (0,90,0) | — | MI_DevWhite |
|
||||
| 16 | LVL_Z1_STR_HouseEastTop | Wall_400x100 | (780, 220, 300) | (0,90,0) | — | MI_DevWhite |
|
||||
| 17 | LVL_Z1_STR_HouseNorthWall | WallDoor_200x300 | (400, 410, 0) | (0,0,0) | — | MI_DevWhite |
|
||||
| 18 | LVL_Z1_STR_HouseNorthFill | Wall_400x300 | (600, 410, 0) | (0,0,0) | — | MI_DevWhite |
|
||||
| 19 | LVL_Z1_STR_HouseRoof_01 | Floor_300x400 | (350, 230, 280) | (0,0,0) | — | MI_DevBrown |
|
||||
| 20 | LVL_Z1_STR_HouseRoof_02 | Floor_300x400 | (650, 230, 280) | (0,0,0) | — | MI_DevBrown |
|
||||
| 21 | LVL_Z1_STR_CourtyardFloor | Floor_1000x1000 | (500, 400, 0) | (0,0,0) | (1, 0.8, 1) | MI_DevGray |
|
||||
|
||||
> **Z1 房屋内空间**:约 (200,30,0)→(800,410,280),即 600×380×280cm。
|
||||
> **门洞高度问题**:WallDoor_200x300 门洞 200cm 宽,300cm 高,但设计要求院门高度 220cm。300cm 资产足够高,门洞实际开口约 200cm 高(标准 BSP 门洞),对于 120cm 身高儿童足够通过。
|
||||
> **房屋北墙上方补齐**:WallDoor_200x300 上方需要补齐至 280cm。可用 Wall_200x100 放在 Z=200 处,或者直接用 Wall_400x300 整块(门洞在下方,上方自然有墙体)。
|
||||
|
||||
#### C1.2 布景物(Props)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z1_PROP_OldBicycle | Car01 | (100, 650, 0) | (0.2, 0.2, 0.2) | — | 50%缩放,靠西院墙 |
|
||||
| 2 | LVL_Z1_PROP_ClothesPole_Beam | Beam_300 | (500, 600, 180) | — | MI_DevWhite | 横杆 |
|
||||
| 3 | LVL_Z1_PROP_ClothesPole_Pole1 | Cylinder | (380, 600, 0) | (0.05, 0.05, 3.6) | MI_DevGray | 支撑柱 |
|
||||
| 4 | LVL_Z1_PROP_ClothesPole_Pole2 | Cylinder | (620, 600, 0) | (0.05, 0.05, 3.6) | MI_DevGray | 支撑柱 |
|
||||
| 5 | LVL_Z1_PROP_JunkPile_Box1 | WoodenBox_Small | (850, 100, 0) | — | — | 东南角 |
|
||||
| 6 | LVL_Z1_PROP_JunkPile_Box2 | WoodenBox_Small | (870, 120, 35) | — | — | 叠放在上方 |
|
||||
| 7 | LVL_Z1_PROP_JunkPile_Bucket | Bucket_01 | (890, 80, 0) | — | — | |
|
||||
| 8 | LVL_Z1_PROP_DoorMat | Cube | (480, 740, 0) | (0.6, 0.4, 0.02) | MI_DevGray | 扁薄长方体 |
|
||||
| 9 | LVL_Z1_PROP_Fridge | Barrel | (720, 80, 0) | (0.3, 0.3, 1.6) | MI_DevWhite | 竖放,缩放模拟冰箱 |
|
||||
| 10 | LVL_Z1_PROP_TV | Monitor_01 | (320, 80, 45) | — | MI_DevGray | 房屋内书桌上 |
|
||||
| 11 | LVL_Z1_PROP_Desk | SimpleTable_01 | (300, 70, 0) | — | — | 房屋内靠西墙 |
|
||||
| 12 | LVL_Z1_PROP_Bed | BedSingle | (350, 250, 0) | — | — | 房屋内中部偏南 |
|
||||
| 13 | LVL_Z1_PROP_Calendar | Cube | (500, 40, 180) | (0.3, 0.02, 0.4) | MI_DevRed | 薄片挂墙 |
|
||||
| 14 | LVL_Z1_PROP_TVStand | SimpleTable_02 | (320, 55, 0) | (0.85, 0.75, 0.67) | — | 电视柜,缩放至约 85×45×50cm |
|
||||
|
||||
> **冰箱替代说明**:执行案建议 Barrel 或 Cube 缩放。Barrel 实际是圆柱形,用 Cube 缩放 (0.3, 0.3, 1.6) 更接近方冰箱外观。
|
||||
|
||||
#### C1.3 交互物标记(Interactables)
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 触发半径 | 交互类型 | 引用 |
|
||||
|---|-----------|-------------|---------|---------|------|
|
||||
| 1 | LVL_Z1_INTR_01_Fridge | (720, 80, 80) | 150 | 观察 | interaction #1 |
|
||||
| 2 | LVL_Z1_INTR_02_Gate | (500, 780, 0) | 150 | 操作(门) | interaction #2 |
|
||||
| 3 | LVL_Z1_INTR_06_TV | (320, 80, 70) | 150 | 观察 | interaction #6 |
|
||||
|
||||
> v0.1 交互物用标识色 Cube 或 Sphere 占位放置,标记交互位置。大小约 30cm,MI_DevYellow。
|
||||
> 实际交互逻辑代码在 6b-6f 子任务中实现。
|
||||
|
||||
#### C1.4 收集品标记(Collectibles)
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|-----------|-------------|--------|------|
|
||||
| 1 | LVL_Z1_COLL_10_CatEyeMarble | (870, 140, 0) | 稀有 | collection #10 |
|
||||
|
||||
> 收集品用 Sphere 缩放至约 3cm,稀有用 MI_DevLight_Yellow(金色光标识),普通用 MI_DevWhite。
|
||||
|
||||
---
|
||||
|
||||
### C2. Z3 — 主街道(Main Street)
|
||||
|
||||
**区域绝对原点**:(0, 800, 0)
|
||||
|
||||
#### C2.1 结构体(南墙 + 北墙)
|
||||
|
||||
**南墙**(Y=800 处,已含 Z1 院门和 Z2 店面):
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z3_STR_SouthWall_C1 | Wall_400x300 | (1800, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 2 | LVL_Z3_STR_SouthWall_C2 | Wall_400x300 | (2200, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 3 | LVL_Z3_STR_SouthWall_C3 | Wall_400x300 | (2600, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 4 | LVL_Z3_STR_SouthWall_C4 | Wall_400x300 | (3000, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 5 | LVL_Z3_STR_SouthWall_C5 | Wall_400x300 | (3400, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 6 | LVL_Z3_STR_SouthWall_C6 | Wall_400x300 | (3800, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 7 | LVL_Z3_STR_SouthWall_D1 | Wall_400x300 | (4200, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
| 8 | LVL_Z3_STR_SouthWall_D2 | Wall_400x300 | (4600, 800, 0) | (0,0,0) | MI_DevGray |
|
||||
|
||||
> A 段 (X=0-1000) = Z1 院门区域(已由 Z1 南院墙覆盖)
|
||||
> B 段 (X=1000-1600) = Z2 店面区域(Z2 建筑南侧)
|
||||
> C 段 (X=1600-4000) = 6 块 Wall_400x300
|
||||
> D 段 (X=4000-5000) = 2 块 Wall_400x300
|
||||
|
||||
**北墙**(Y=1300 处):
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z3_STR_NorthWall_A1 | Wall_400x300 | (200, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 2 | LVL_Z3_STR_NorthWall_A2 | Wall_400x300 | (600, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 3 | LVL_Z3_STR_NorthWall_A3 | Wall_400x300 | (1000, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 4 | LVL_Z3_STR_NorthWall_A4 | Wall_400x300 | (1400, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 5 | LVL_Z3_STR_NorthWall_A5 | Wall_400x300 | (1800, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 6 | LVL_Z3_STR_NorthWall_A6 | Wall_200x300 | (2100, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 7 | LVL_Z3_STR_NorthWall_C1 | Wall_400x300 | (2800, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 8 | LVL_Z3_STR_NorthWall_C2 | Wall_400x300 | (3200, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
| 9 | LVL_Z3_STR_NorthWall_C3 | Wall_100x300 | (3450, 1300, 0) | (0,0,0) | MI_DevGray |
|
||||
|
||||
> B 段 (X=2300-2600) = 巷子入口,开放通行,无墙体
|
||||
> D 段 (X=3500-5000) = 空地入口,开放通行,无墙体
|
||||
> E 段 (X=5000) = 场景边界围挡
|
||||
|
||||
#### C2.2 布景物
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z3_PROP_PhoneBooth | Cube | (1800, 380, 0) | (0.8, 0.8, 2.2) | MI_DevGray | 街道北侧靠墙 |
|
||||
| 2 | LVL_Z3_PROP_Bicycle | Car01 | (2800, 880, 0) | (0.2, 0.2, 0.2) | — | 街道南侧 |
|
||||
| 3 | LVL_Z3_PROP_ClothesPole | Beam_300 | (1200, 1250, 180) | — | MI_DevWhite | 北墙处晾衣杆 |
|
||||
| 4 | LVL_Z3_PROP_ClothesPolePole | Cylinder | (1200, 1250, 0) | (0.05, 0.05, 3.6) | MI_DevGray | 支撑柱 |
|
||||
| 5 | LVL_Z3_PROP_SewerCover | CirclePlatform | (800, 1050, 0) | (0.12, 0.12, 0.02) | MI_DevGray | 路面中央 |
|
||||
| 6 | LVL_Z3_PROP_Graffiti | Cube | (3200, 1270, 100) | (1.2, 0.05, 0.8) | MI_DevYellow | 北墙C段墙面 |
|
||||
| 7 | LVL_Z3 PROP_AdWall | DisplayPanels_400x200 | (3800, 1280, 0) | — | MI_DevGray | 北墙D段手绘广告 |
|
||||
| 8 | LVL_Z3_PROP_TrashCan | TrashCans_01 | (4200, 850, 0) | — | MI_DevGreen | 街道南侧 |
|
||||
| 9 | LVL_Z3_PROP_PoleWest | Cylinder | (1000, 1050, 0) | (0.04, 0.04, 12) | MI_DevGray | 电线杆西 |
|
||||
| 10 | LVL_Z3_PROP_PoleEast | Cylinder | (3500, 1050, 0) | (0.04, 0.04, 12) | MI_DevGray | 电线杆东 |
|
||||
|
||||
> **公共电话亭替代**:执行案建议 Cube+Cylinder 组合。用单个 Cube 缩放模拟方形电话亭。
|
||||
> **下水道盖替代**:CirclePlatform 缩小至约 60cm 直径,扁平放置。
|
||||
|
||||
#### C2.3 交互物
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 触发半径 | 引用 |
|
||||
|---|-----------|-------------|---------|------|
|
||||
| 1 | LVL_Z3_INTR_04_PhoneBooth | (1800, 380, 110) | 150 | interaction #4 |
|
||||
| 2 | LVL_Z3_INTR_09_Graffiti | (3200, 1270, 140) | 150 | interaction #9 |
|
||||
|
||||
#### C2.4 收集品
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|-----------|-------------|--------|------|
|
||||
| 1 | LVL_Z3_COLL_08_IceFlowerMarble | (820, 1060, 0) | 普通 | collection #8 |
|
||||
|
||||
---
|
||||
|
||||
### C3. Z2 — 小卖部(Corner Shop)
|
||||
|
||||
**区域绝对原点**:(1000, 200, 0)
|
||||
|
||||
#### C3.1 结构体
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z2_STR_SouthWall | Wall_400x300 | (1200, 200, 0) | (0,0,0) | MI_DevOrange |
|
||||
| 2 | LVL_Z2_STR_SouthWall2 | Wall_200x300 | (1500, 200, 0) | (0,0,0) | MI_DevOrange |
|
||||
| 3 | LVL_Z2_STR_WestWall | Wall_400x300 | (1000, 400, 0) | (0,90,0) | MI_DevOrange |
|
||||
| 4 | LVL_Z2_STR_WestWallTop | Wall_400x100 | (1000, 400, 300) | (0,90,0) | MI_DevOrange |
|
||||
| 5 | LVL_Z2_STR_EastWall | Wall_400x300 | (1580, 400, 0) | (0,90,0) | MI_DevOrange |
|
||||
| 6 | LVL_Z2_STR_EastWallTop | Wall_400x100 | (1580, 400, 300) | (0,90,0) | MI_DevOrange |
|
||||
| 7 | LVL_Z2_STR_NorthWall_West | Wall_200x300 | (1100, 580, 0) | (0,0,0) | MI_DevOrange |
|
||||
| 8 | LVL_Z2_STR_NorthWall_Garage | WallDoorGarage_400x300 | (1300, 580, 0) | (0,0,0) | MI_DevOrange |
|
||||
| 9 | LVL_Z2_STR_NorthWall_East | Wall_200x300 | (1500, 580, 0) | (0,0,0) | MI_DevOrange |
|
||||
| 10 | LVL_Z2_STR_GarageDoor | GarageDoorOpen_01 | (1300, 580, 0) | (0,0,0) | MI_DevGray |
|
||||
| 11 | LVL_Z2_STR_Roof_01 | Floor_300x400 | (1250, 400, 280) | (0,0,0) | MI_DevBrown |
|
||||
| 12 | LVL_Z2_STR_Roof_02 | Floor_300x400 | (1350, 400, 280) | (0,0,0) | MI_DevBrown |
|
||||
| 13 | LVL_Z2_STR_Awning_01 | Floor_200x300 | (1100, 700, 260) | (0,0,0) | MI_DevWhite |
|
||||
| 14 | LVL_Z2_STR_Awning_02 | Floor_200x300 | (1400, 700, 260) | (0,0,0) | MI_DevWhite |
|
||||
|
||||
#### C3.2 布景物
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z2_PROP_Counter | Cube | (1200, 500, 0) | (2, 0.6, 0.9) | MI_DevGlassWhite | 玻璃柜台 |
|
||||
| 2 | LVL_Z2_PROP_ShelfEast_01 | Fence_Small_400 | (1520, 300, 0) | (1, 1, 1.8) | MI_DevGray | 东墙货架(竖放) |
|
||||
| 3 | LVL_Z2_PROP_ShelfEast_02 | Fence_Small_400 | (1520, 300, 180) | (1, 1, 1.8) | MI_DevGray | 二层 |
|
||||
| 4 | LVL_Z2_PROP_ShelfSouth | Fence_Small_400 | (1100, 230, 0) | (1, 1, 1.8) | MI_DevGray | 南墙货架 |
|
||||
| 5 | LVL_Z2_PROP_Freezer | Container_Normal | (1050, 400, 0) | (0.25, 0.15, 0.4) | MI_DevWhite | 老式冰柜 |
|
||||
| 6 | LVL_Z2_PROP_SmallTV | Monitor_01 | (1350, 540, 90) | (0.6, 0.6, 0.6) | MI_DevGray | 柜台角落 |
|
||||
| 7 | LVL_Z2_PROP_Signboard | Cube | (1150, 610, 280) | (3, 0.05, 0.4) | MI_DevBlue | 招牌 |
|
||||
| 8 | LVL_Z2_PROP_CardRack | Cube | (1400, 550, 0) | (0.4, 0.2, 0.3) | MI_DevGray | 卡片架 |
|
||||
|
||||
> **冰柜替代**:执行案建议 Cube 缩放。Container_Normal 缩小后也合适。Cube 更简单。
|
||||
> **货架替代**:Fence_Small_400 竖放并 Y 缩放模拟多层货架。
|
||||
|
||||
#### C3.3 交互物
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 触发半径 | 引用 |
|
||||
|---|-----------|-------------|---------|------|
|
||||
| 1 | LVL_Z2_INTR_05_ShopOwner | (1300, 480, 0) | 200 | interaction #5 |
|
||||
| 2 | LVL_Z2_INTR_07_SnackShelf | (1520, 350, 90) | 150 | interaction #7 |
|
||||
|
||||
#### C3.4 收集品
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|-----------|-------------|--------|------|
|
||||
| 1 | LVL_Z2_COLL_09_BouncyBall | (1300, 700, 0) | 普通 | collection #9 |
|
||||
|
||||
---
|
||||
|
||||
### C4. Z4 — 空地(Vacant Lot)
|
||||
|
||||
**区域绝对原点**:(3500, 1300, 0)
|
||||
|
||||
#### C4.1 结构体
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z4_STR_EastBound_01 | BarrierWall_600 | (4980, 1600, 0) | (0,90,0) | MI_DevBlue |
|
||||
| 2 | LVL_Z4_STR_EastBound_02 | BarrierWall_600 | (4980, 2200, 0) | (0,90,0) | MI_DevBlue |
|
||||
| 3 | LVL_Z4_STR_NorthBound_01 | BarrierWall_600 | (3800, 2480, 0) | (0,0,0) | MI_DevBlue |
|
||||
| 4 | LVL_Z4_STR_NorthBound_02 | BarrierWall_600 | (4400, 2480, 0) | (0,0,0) | MI_DevBlue |
|
||||
| 5 | LVL_Z4_STR_NorthBound_03 | BarrierWall_200 | (4700, 2480, 0) | (0,0,0) | MI_DevBlue |
|
||||
| 6 | LVL_Z4_STR_WestLowWall_01 | BarrierWall_200 | (3500, 1500, 0) | (0,90,0) | MI_DevGray |
|
||||
| 7 | LVL_Z4_STR_WestLowWall_02 | BarrierWall_200 | (3500, 1900, 0) | (0,90,0) | MI_DevGray |
|
||||
| 8 | LVL_Z4_STR_WestLowWall_03 | BarrierWall_200 | (3500, 2300, 0) | (0,90,0) | MI_DevGray |
|
||||
|
||||
> **BarrierWall 高度注意**:BarrierWall_600/200 实际高度仅 100cm。设计要求围挡 200cm。需堆叠 2 层。
|
||||
> 每个 BarrierWall 上方放置一个相同资产,Z 偏移 +100。
|
||||
> **替代方案**:用 Wall_400x300 旋转 90° 后更高效(300cm 高度一次到位)。
|
||||
|
||||
#### C4.2 布景物
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z4_PROP_BigTree | Tree_01 | (4250, 1900, 10) | (1.2, 1.2, 1.2) | MI_DevFoliage | 中央偏北 |
|
||||
| 2 | LVL_Z4_PROP_Bricks_01~05 | WoodenBox_Small | (3700, 1600~1800, 10) 随机散布 | — | — | 5 块散落 |
|
||||
| 3 | LVL_Z4_PROP_Puddle | Cube | (4600, 1500, 5) | (1.2, 0.8, 0.01) | MI_DevGlassBlue | 积水坑 |
|
||||
| 4 | LVL_Z4_PROP_MarbleCircle | CirclePlatform | (4100, 1800, 12) | (0.16, 0.16, 0.01) | MI_DevGray | 弹珠圈痕迹 |
|
||||
| 5 | LVL_Z4_PROP_Debris_01 | WoodenPallet_01 | (4800, 2300, 10) | — | — | 废弃建材 |
|
||||
| 6 | LVL_Z4_PROP_Debris_02 | WoodenBox_Normal | (4850, 2250, 10) | — | — | 废弃建材 |
|
||||
|
||||
#### C4.3 交互物
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 触发半径 | 引用 |
|
||||
|---|-----------|-------------|---------|------|
|
||||
| 1 | LVL_Z4_INTR_03_BlueMarble | (3900, 1700, 10) | 100 | interaction #3 ↔ collection #1 |
|
||||
| 2 | LVL_Z4_INTR_08_SmallStone | (4550, 1550, 10) | 100 | interaction #8 ↔ collection #3 |
|
||||
|
||||
#### C4.4 收集品
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|-----------|-------------|--------|------|
|
||||
| 1 | LVL_Z4_COLL_01_BlueMarble | (3900, 1700, 10) | 普通 | collection #1 |
|
||||
| 2 | LVL_Z4_COLL_03_SmallStone | (4550, 1550, 10) | 普通 | collection #3 |
|
||||
| 3 | LVL_Z4_COLL_04_LuZhishenCard | (3720, 1610, 10) | 稀有 | collection #4 |
|
||||
|
||||
---
|
||||
|
||||
### C5. Z5 — 巷子(Alley)
|
||||
|
||||
**区域绝对原点**:(2300, 1300, 0)
|
||||
|
||||
#### C5.1 结构体
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z5_STR_WestWall_01 | Wall_400x300 | (2300, 1500, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 2 | LVL_Z5_STR_WestWall_02 | Wall_400x300 | (2300, 1900, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 3 | LVL_Z5_STR_WestWall_03 | Wall_400x300 | (2300, 2300, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 4 | LVL_Z5_STR_WestWall_04 | Wall_400x300 | (2300, 2700, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 5 | LVL_Z5_STR_WestWall_05 | Wall_400x300 | (2300, 3100, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 6 | LVL_Z5_STR_EastWall_01 | Wall_400x300 | (2580, 1500, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 7 | LVL_Z5_STR_EastWall_02 | Wall_400x300 | (2580, 1900, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 8 | LVL_Z5_STR_EastWall_03 | Wall_400x300 | (2580, 2300, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 9 | LVL_Z5_STR_EastWall_04 | Wall_400x300 | (2580, 2700, 0) | (0,90,0) | MI_DevWhite |
|
||||
| 10 | LVL_Z5_STR_EastWall_05 | Wall_400x300 | (2580, 3100, 0) | (0,90,0) | MI_DevWhite |
|
||||
|
||||
> 墙高 300cm > 设计要求 300cm,匹配。
|
||||
> 巷子宽度 = 2580-2300-20(墙厚) = 260cm,接近设计 300cm。**偏差 +40cm**(详见报告)。
|
||||
|
||||
#### C5.2 布景物
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z5_PROP_WasteBox | WoodenBox_Small | (2380, 2900, 0) | — | — | 巷子深处靠西墙 |
|
||||
| 2 | LVL_Z5_PROP_SpiderWeb | Cube | (2305, 2100, 250) | (0.3, 0.3, 0.01) | MI_DevWhite | 西墙高处薄片 |
|
||||
| 3 | LVL_Z5_PROP_OldWindow | FakeWindowsFrame | (2310, 2100, 150) | — | MI_DevGray | 西墙中段 |
|
||||
| 4 | LVL_Z5_PROP_FlowerPot | Cylinder | (2340, 2100, 150) | (0.2, 0.2, 0.25) | MI_DevGreen | 窗台花盆 |
|
||||
| 5 | LVL_Z5_PROP_Moss | Cube | (2400, 2700, 0) | (0.6, 0.4, 0.01) | MI_DevFoliage | 地面青苔 |
|
||||
|
||||
#### C5.3 交互物
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 触发半径 | 引用 |
|
||||
|---|-----------|-------------|---------|------|
|
||||
| 1 | LVL_Z5_INTR_10_WasteBox | (2380, 2900, 25) | 150 | interaction #10 |
|
||||
|
||||
#### C5.4 收集品
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|-----------|-------------|--------|------|
|
||||
| 1 | LVL_Z5_COLL_02_RedMarble | (2500, 3000, 0) | 普通 | collection #2 |
|
||||
|
||||
> Z5-C07(水浒卡·武松)在废纸箱内,不单独放置,通过翻找获得。
|
||||
|
||||
---
|
||||
|
||||
### C6. Z6 — 水塘边(Pond)
|
||||
|
||||
**区域绝对原点**:(1600, 3300, 0)
|
||||
|
||||
#### C6.1 结构体(见 B1 地面部分已铺设)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 旋转 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z6_STR_EastBound_01 | BarrierWall_600 | (3080, 3600, 0) | (0,90,0) | MI_DevBlue |
|
||||
| 2 | LVL_Z6_STR_EastBound_02 | BarrierWall_600 | (3080, 4200, 0) | (0,90,0) | MI_DevBlue |
|
||||
| 3 | LVL_Z6_STR_NorthBound_01 | BarrierWall_600 | (1900, 4680, 0) | (0,0,0) | MI_DevBlue |
|
||||
| 4 | LVL_Z6_STR_NorthBound_02 | BarrierWall_600 | (2500, 4680, 0) | (0,0,0) | MI_DevBlue |
|
||||
| 5 | LVL_Z6_STR_NorthBound_03 | BarrierWall_200 | (2800, 4680, 0) | (0,0,0) | MI_DevBlue |
|
||||
|
||||
> 同 Z4,BarrierWall 需堆叠 2 层达到 200cm。
|
||||
|
||||
#### C6.2 布景物
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z6_PROP_Reeds_S1~5 | Cylinder | (1800, 3600, 0) 随机偏移 | (0.08, 0.08, 2) | MI_DevFoliage | 南岸左 5 根 |
|
||||
| 2 | LVL_Z6_PROP_Reeds_S2_1~5 | Cylinder | (2700, 3600, 0) 随机偏移 | (0.08, 0.08, 2) | MI_DevFoliage | 南岸右 5 根 |
|
||||
| 3 | LVL_Z6_PROP_Reeds_E_1~3 | Cylinder | (2900, 4100, 0) 随机偏移 | (0.08, 0.08, 1.6) | MI_DevFoliage | 东岸 3 根 |
|
||||
| 4 | LVL_Z6_PROP_LilyPad_1~4 | CirclePlatform | (2200, 3900, -18) 随机 | (0.06, 0.06, 0.01) | MI_DevGreen | 水面荷叶 |
|
||||
| 5 | LVL_Z6_PROP_Frog | Cube | (2100, 3680, 0) | (0.05, 0.05, 0.04) | MI_DevGreen | 南岸小青蛙 |
|
||||
|
||||
#### C6.3 收集品
|
||||
|
||||
| # | Actor 名称 | 位置 (X,Y,Z) | 稀有度 | 引用 |
|
||||
|---|-----------|-------------|--------|------|
|
||||
| 1 | LVL_Z6_COLL_05_CandyWrapper | (2000, 3500, 0) | 普通 | collection #5 |
|
||||
| 2 | LVL_Z6_COLL_06_Eraser | (2500, 3450, 0) | 普通 | collection #6 |
|
||||
|
||||
---
|
||||
|
||||
### C7. Z7 — 老居民楼(背景装饰)
|
||||
|
||||
**区域绝对原点**:(5800, 200, 0)
|
||||
|
||||
#### C7.1 结构体
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 |
|
||||
|---|-----------|------|-------------|------|------|
|
||||
| 1 | LVL_Z7_STR_Building | Building_01 | (6400, 800, 0) | — | MI_DevGray |
|
||||
| 2 | LVL_Z7_STR_CollisionFront | Wall_400x300 | (6200, 150, 0) | — | MI_DevGray |
|
||||
| 3 | LVL_Z7_STR_CollisionFront2 | Wall_400x300 | (6600, 150, 0) | — | MI_DevGray |
|
||||
| 4 | LVL_Z7_STR_CollisionFront3 | Wall_400x300 | (7000, 150, 0) | — | MI_DevGray |
|
||||
| 5 | LVL_Z7_STR_CollisionSide | Wall_400x300 | (5750, 400, 0) | (0,90,0) | MI_DevGray |
|
||||
| 6 | LVL_Z7_STR_CollisionSide2 | Wall_400x300 | (5750, 800, 0) | (0,90,0) | MI_DevGray |
|
||||
|
||||
> Building_01 放置在 (6400, 800) — 即区域中心偏南。
|
||||
> 碰撞围墙阻挡玩家靠近。Building_01 的默认尺寸可能与设计 1200×600 有出入,需在编辑器中调整。
|
||||
|
||||
#### C7.2 布景物
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 缩放 | 材质 | 说明 |
|
||||
|---|-----------|------|-------------|------|------|------|
|
||||
| 1 | LVL_Z7_PROP_ClothesPole_01 | Beam_300 | (6100, 190, 800) | — | MI_DevWhite | 阳台晾衣杆 |
|
||||
| 2 | LVL_Z7_PROP_ClothesPole_02 | Beam_300 | (6500, 190, 1200) | — | MI_DevWhite | 不同楼层 |
|
||||
| 3 | LVL_Z7_PROP_ClothesPole_03 | Beam_300 | (6900, 190, 1600) | — | MI_DevWhite | 不同楼层 |
|
||||
| 4 | LVL_Z7_PROP_TrashCan | TrashCans_01 | (6000, 140, 0) | — | MI_DevGreen | 楼下地面 |
|
||||
|
||||
---
|
||||
|
||||
## 五、Phase C — 全局物件
|
||||
|
||||
### G-01 路灯(3 个)
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 材质 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z3_LGT_StreetLight_01 | RoadLamp_01 | (1500, 1050, 0) | — |
|
||||
| 2 | LVL_Z3_LGT_StreetLight_02 | RoadLamp_01 | (3000, 1050, 0) | — |
|
||||
| 3 | LVL_Z3_LGT_StreetLight_03 | RoadLamp_01 | (4500, 1050, 0) | — |
|
||||
|
||||
### G-02 垃圾桶(2 个,街道南侧)
|
||||
|
||||
> Z3-P07 已放置 1 个在 (4200, 850),补 1 个:
|
||||
|
||||
| # | Actor 名称 | 资产 | 位置 (X,Y,Z) | 材质 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z3_PROP_TrashCan_02 | TrashCans_01 | (2000, 850, 0) | MI_DevGreen |
|
||||
|
||||
---
|
||||
|
||||
## 六、Phase D — 光照
|
||||
|
||||
### D1 全局光源
|
||||
|
||||
| # | Actor 名称 | 类型 | 参数 |
|
||||
|---|-----------|------|------|
|
||||
| 1 | LVL_Global_DirectionalLight | Directional Light | 色温 ~5500K 暖白;从西南照射(Rotation 约 Yaw=315°, Pitch=-45°);强度中等 |
|
||||
| 2 | LVL_Global_SkyLight | Sky Light | 强度低-中;提供环境补光 |
|
||||
|
||||
> **Rotation 参考**:夏日午后 15:00,太阳从西南方向。Yaw 约 315°(西北到西南之间),Pitch 约 -45°。
|
||||
> **实际操作**:在编辑器中调整 Directional Light 的 Rotation 直到视觉效果符合"温暖午后"氛围。光照参数均为建议值,可调。
|
||||
|
||||
### D2 路灯点光源(3 个)
|
||||
|
||||
| # | Actor 名称 | 类型 | 位置 (X,Y,Z) | 参数 |
|
||||
|---|-----------|------|-------------|------|
|
||||
| 1 | LVL_Z3_LGT_PointLight_01 | Point Light | (1500, 1050, 400) | 暖黄色,低强度 |
|
||||
| 2 | LVL_Z3_LGT_PointLight_02 | Point Light | (3000, 1050, 400) | 暖黄色,低强度 |
|
||||
| 3 | LVL_Z3_LGT_PointLight_03 | Point Light | (4500, 1050, 400) | 暖黄色,低强度 |
|
||||
|
||||
> v0.1 路灯为装饰性光源,午后阳光下几乎不可见。
|
||||
|
||||
---
|
||||
|
||||
## 七、Phase E — 验证清单
|
||||
|
||||
### E1 角色比例检查
|
||||
|
||||
以主角(身高 ~120cm,摄像机 ~100cm)验证:
|
||||
|
||||
- [ ] Z1 院门可通过(门洞 200cm 宽 × 220cm 高 → 实际 WallDoor_200x300 门洞约 100cm 高开口)
|
||||
- [ ] Z1 房屋门可通过(WallDoor_200x300 门洞)
|
||||
- [ ] Z2 卷帘门可通过(400cm 宽开放门洞)
|
||||
- [ ] 室内摄像机不穿墙/天花板(室内净高 280cm,摄像机 100cm,头顶 180cm 余量)
|
||||
- [ ] 窗台高度合理(WallWindow 窗台约 100cm 高,主角 120cm 可看到外面)
|
||||
- [ ] 桌面高度与主角协调(SimpleTable_01 ~75cm 高,主角 120cm 身高,桌面到腰)
|
||||
- [ ] Z5 巷子可通过(宽度约 260cm,主角可通行)
|
||||
|
||||
### E2 流线通行检查
|
||||
|
||||
- [ ] Z1 院门 → Z3 街道:院门 (500, 780) 北行进入街道 (500, 800+)
|
||||
- [ ] Z3 街道 → Z2 小卖部:X=1000-1600 区域北行至店面
|
||||
- [ ] Z3 街道 → Z4 空地:北墙 D 段开放(X=3500-5000, Y=1300)
|
||||
- [ ] Z3 街道 → Z5 巷子:北墙 B 段开放(X=2300-2600, Y=1300)
|
||||
- [ ] Z5 巷子 → Z6 水塘边:巷子北端 (2300-2600, 3300) 进入水塘区域
|
||||
- [ ] Z7 不可到达:碰撞围墙阻挡
|
||||
- [ ] 无死胡同(所有路径有明确去向或自然终止)
|
||||
- [ ] 步行距离合理(从家到最远点约 200 秒步行 ≈ 游戏内 1 分钟内)
|
||||
|
||||
### E3 尺寸偏差验证
|
||||
|
||||
- [ ] Z3 北墙偏移 480cm vs 区域深度 500cm(PM 审查提及差 20cm,需验证)
|
||||
- [ ] Z5 巷子实际宽度 vs 设计 300cm
|
||||
- [ ] BarrierWall 高度堆叠后是否达到设计围挡高度
|
||||
|
||||
---
|
||||
|
||||
## 八、Actor 统计
|
||||
|
||||
| 类别 | 数量 | 说明 |
|
||||
|------|------|------|
|
||||
| 结构体 (STR) | ~80 | 墙体、地板、门框、屋顶、围挡 |
|
||||
| 布景 (PROP) | ~45 | 家具、装饰、车辆、植被 |
|
||||
| 交互物 (INTR) | 10 | 占位标记(后续实现交互逻辑) |
|
||||
| 收集品 (COLL) | 10 | 占位标记(后续实现拾取逻辑) |
|
||||
| 边界 (BND) | ~45 | 四面围挡 |
|
||||
| 光源 (LGT) | 5 | 1 定向光 + 1 天空光 + 3 路灯 |
|
||||
| **合计** | **~195** | |
|
||||
@@ -0,0 +1,212 @@
|
||||
# v0.1 白模搭建报告 — 城郊小街
|
||||
|
||||
> P-006 任务产出 — 搭建准备阶段
|
||||
> 最后更新:2026-06-07
|
||||
|
||||
---
|
||||
|
||||
## 一、搭建概要
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|-----|
|
||||
| 关卡文件 | `Content/Maps/LVL_SuburbanV01.umap`(需在 UE5 编辑器中创建) |
|
||||
| 搭建指南 | `docs/technical/level-v01-build-guide.md` |
|
||||
| 场景尺寸 | 8000cm × 6000cm(80m × 60m) |
|
||||
| 区域数量 | 7 个(Z1-Z7) |
|
||||
| 预估总 Actor 数 | ~195 |
|
||||
| BSP 资产包 | Content/BlockingStarterPack/ |
|
||||
|
||||
### 各类别预估数量
|
||||
|
||||
| 类别 | 数量 |
|
||||
|------|------|
|
||||
| 结构体 (STR) | ~80 |
|
||||
| 布景 (PROP) | ~45 |
|
||||
| 交互物 (INTR) | 10 |
|
||||
| 收集品 (COLL) | 10 |
|
||||
| 边界 (BND) | ~45 |
|
||||
| 光源 (LGT) | 5 |
|
||||
| **合计** | **~195** |
|
||||
|
||||
---
|
||||
|
||||
## 二、逐区域对照
|
||||
|
||||
### Z1 家
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 院墙高度 | 250cm | Wall_400x300(300cm 高) | 轻微:+50cm,视觉影响小 |
|
||||
| 院门宽度 | 200cm | WallDoor_200x300 | ✅ 匹配 |
|
||||
| 院门高度 | 220cm | WallDoor_200x300 门洞约 100cm 开口 | ⚠️ 需验证门洞实际开口高度 |
|
||||
| 房屋尺寸 | 600×380×280 | 按偏移放置墙体围合 | ✅ 匹配 |
|
||||
| 旧自行车 | Car01 缩放 50% | Car01 缩放 20% | 轻微:BSP Car01 默认较大,20% 更接近自行车尺寸 |
|
||||
| 老式冰箱 | Barrel 或 Cube | Cube 缩放模拟方冰箱 | 轻微:Barrel 圆柱形不如 Cube 方形更像冰箱 |
|
||||
| 交互物 3 个 | I01/I02/I06 | 标记位置 | ✅ 匹配 |
|
||||
| 收集品 1 个 | C10 猫眼弹珠 | 标记位置 | ✅ 匹配 |
|
||||
|
||||
### Z2 小卖部
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 建筑尺寸 | 600×400×280 | 按偏移放置 | ✅ 匹配 |
|
||||
| 卷帘门 | GarageDoorOpen_01 | ✅ | ✅ 匹配 |
|
||||
| 遮阳棚 | Floor_200x300 × 2 | ✅ | ✅ 匹配 |
|
||||
| 玻璃柜台 | Cube + MI_DevGlassWhite | ✅ | ✅ 匹配 |
|
||||
| 零食货架 | Fence_Small_400 竖放 × 2 | Fence_Small_400 排列 | ✅ 匹配 |
|
||||
| 老式冰柜 | Cube 缩放 + MI_DevWhite | Container_Normal 缩小替代 | 轻微:Cube 方案更简单 |
|
||||
| 招牌 | Cube 薄片 + MI_DevBlue | ✅ | ✅ 匹配 |
|
||||
| 交互物 2 个 | I05/I07 | 标记位置 | ✅ 匹配 |
|
||||
| 收集品 1 个 | C09 小弹力球 | 标记位置 | ✅ 匹配 |
|
||||
|
||||
### Z3 主街道
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 街道尺寸 | 5000×500 | Floor_1000x1000 × 5 平铺 | ✅ 匹配 |
|
||||
| 南墙 C 段 | X=1600-4000, 2400cm | 6 块 Wall_400x300 | ✅ 匹配 |
|
||||
| 南墙 D 段 | X=4000-5000, 1000cm | 2 块 Wall_400x300 + Wall_200x300 | ✅ 匹配 |
|
||||
| 北墙 A 段 | X=0-2300, 2300cm | 5 块 Wall_400x300 + 1 块 Wall_200x300 | ✅ 匹配 |
|
||||
| 北墙 B 段 | 300cm 开口 | 开放通行 | ✅ 匹配 |
|
||||
| 北墙 C 段 | X=2600-3500, 900cm | 2 块 Wall_400x300 + 1 块 Wall_100x300 | ✅ 匹配 |
|
||||
| 北墙 D 段 | 1500cm 开口 | 开放通行 | ✅ 匹配 |
|
||||
| 公用电话亭 | Cube+Cylinder | Cube 单体缩放 | 轻微:简化为单体 |
|
||||
| 广告墙 | DisplayPanels_400x200 | ✅ | ✅ 匹配 |
|
||||
| 交互物 2 个 | I04/I09 | 标记位置 | ✅ 匹配 |
|
||||
| 收集品 1 个 | C08 透明冰花弹珠 | 标记位置 | ✅ 匹配 |
|
||||
|
||||
### Z4 空地
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 地面高度 | +10cm | Floor Z=10 | ✅ 匹配 |
|
||||
| 东边界围挡 | BarrierWall_600 × 2 | ✅(需堆叠 2 层) | ⚠️ BarrierWall_600 高仅 100cm,需堆叠 |
|
||||
| 北边界围挡 | BarrierWall_600 × 2 + BarrierWall_200 | ✅(需堆叠) | 同上 |
|
||||
| 西边界矮墙 | BarrierWall_200 × 6 | ✅ | ✅ 匹配 |
|
||||
| 大梧桐树 | Tree_01 | ✅ | ✅ 匹配 |
|
||||
| 交互物 2 个 | I03/I08 | 标记位置 | ✅ 匹配 |
|
||||
| 收集品 3 个 | C01/C03/C04 | 标记位置 | ✅ 匹配 |
|
||||
|
||||
### Z5 巷子
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 巷子宽度 | 300cm | 实际约 260cm(2580-2300-20墙厚) | **重大**:宽度差 40cm,仅 87% 设计宽度 |
|
||||
| 巷子长度 | 2000cm | 墙体 Y=1300-3300 覆盖 | ✅ 匹配 |
|
||||
| 墙壁高度 | 300cm | Wall_400x300(300cm) | ✅ 匹配 |
|
||||
| 老窗户 | FakeWindowsFrame | ✅ | ✅ 匹配 |
|
||||
| 交互物 1 个 | I10 废纸箱 | 标记位置 | ✅ 匹配 |
|
||||
| 收集品 1 个 | C02 红色花纹弹珠 | 标记位置 | ✅ 匹配 |
|
||||
|
||||
### Z6 水塘边
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 水面高度 | Z=-20cm | ✅ | ✅ 匹配 |
|
||||
| 水面尺寸 | 1200×800 | Floor 缩放覆盖 | ✅ 匹配 |
|
||||
| 岸边三面 | 各约 300cm | Floor 覆盖 | ✅ 匹配 |
|
||||
| 芦苇丛 | Cylinder × N | ✅ | ✅ 匹配 |
|
||||
| 交互物 | 无 | — | ✅ 匹配 |
|
||||
| 收集品 2 个 | C05/C06 | 标记位置 | ✅ 匹配 |
|
||||
|
||||
### Z7 老居民楼
|
||||
|
||||
| 条目 | 文档要求 | 实际方案 | 偏差 |
|
||||
|------|---------|---------|------|
|
||||
| 建筑尺寸 | 1200×600×1800 | Building_01 默认尺寸待验证 | ⚠️ 需在编辑器中确认/缩放 |
|
||||
| 碰撞围墙 | 阻止靠近 | Wall_400x300 排列 | ✅ 匹配 |
|
||||
| 不可进入 | 无门洞 | ✅ | ✅ 匹配 |
|
||||
| 晾衣杆 3 个 | Beam_300 × 3 | ✅ | ✅ 匹配 |
|
||||
|
||||
---
|
||||
|
||||
## 三、资产替代清单
|
||||
|
||||
| # | 文档建议 | 实际使用 | 原因 |
|
||||
|---|---------|---------|------|
|
||||
| 1 | BarrierWall_600/200(围挡) | 建议改用 Wall_400x300 旋转 90° | BarrierWall 高仅 100cm 需堆叠 2-3 层,Wall_400x300 高 300cm 一步到位更高效 |
|
||||
| 2 | Car01 缩放 50%(自行车) | Car01 缩放 20% | BSP Car01 默认尺寸(约 450cm 长)远大于自行车,20% 缩放至约 170cm 更接近 |
|
||||
| 3 | Barrel(冰箱) | Cube 缩放 | Barrel 为圆柱形,冰箱应为方形,Cube 更合适 |
|
||||
| 4 | Container_Normal(冰柜) | Cube 缩放 | 同上,Cube 更简单直接 |
|
||||
| 5 | BarricadeWall_100(路障) | 未使用 | 执行案未引用此资产(D-001 审查已修正) |
|
||||
|
||||
---
|
||||
|
||||
## 四、缩放记录
|
||||
|
||||
| Actor | 资产 | 默认尺寸 | 缩放 | 实际尺寸 | 用途 |
|
||||
|-------|------|---------|------|---------|------|
|
||||
| 自行车 | Car01 | ~450×180×150 | (0.2, 0.2, 0.2) | ~90×36×30 | 旧自行车 |
|
||||
| 冰箱 | Cube | 100×100×100 | (0.3, 0.3, 1.6) | 30×30×160 | 老式冰箱 |
|
||||
| 门垫 | Cube | 100×100×100 | (0.6, 0.4, 0.02) | 60×40×2 | 扁薄长方体 |
|
||||
| 日历 | Cube | 100×100×100 | (0.3, 0.02, 0.4) | 30×2×40 | 墙面薄片 |
|
||||
| 玻璃柜台 | Cube | 100×100×100 | (2, 0.6, 0.9) | 200×60×90 | 扁长方体 |
|
||||
| 招牌 | Cube | 100×100×100 | (3, 0.05, 0.4) | 300×5×40 | 薄长条 |
|
||||
| 积水坑 | Cube | 100×100×100 | (1.2, 0.8, 0.01) | 120×80×1 | 扁平水面 |
|
||||
| 电话亭 | Cube | 100×100×100 | (0.8, 0.8, 2.2) | 80×80×220 | 方形亭 |
|
||||
| 电线杆 | Cylinder | ~100Ø×100 | (0.04, 0.04, 12) | ~Ø4×600 | 高细圆柱 |
|
||||
| 支撑柱 | Cylinder | ~100Ø×100 | (0.05, 0.05, 3.6) | ~Ø5×180 | 晾衣杆柱 |
|
||||
| 花盆 | Cylinder | ~100Ø×100 | (0.2, 0.2, 0.25) | ~Ø20×25 | 窗台小花盆 |
|
||||
| 青蛙 | Cube | 100×100×100 | (0.05, 0.05, 0.04) | 5×5×4 | 微型 |
|
||||
| 荷叶 | CirclePlatform | ~100Ø | (0.06, 0.06, 0.01) | ~Ø6 | 水面小圆 |
|
||||
| 弹珠圈 | CirclePlatform | ~100Ø | (0.16, 0.16, 0.01) | ~Ø16 | 地面圆圈 |
|
||||
| 下水道盖 | CirclePlatform | ~100Ø | (0.12, 0.12, 0.02) | ~Ø12 | 路面小圆 |
|
||||
| 芦苇 | Cylinder | ~100Ø×100 | (0.08, 0.08, 2) | ~Ø8×200 | 细长植物 |
|
||||
|
||||
---
|
||||
|
||||
## 五、未实现项
|
||||
|
||||
| # | 项目 | 原因 | 建议处理 |
|
||||
|---|------|------|---------|
|
||||
| 1 | `.umap` 关卡文件 | 无法在 CLI 中创建二进制 UE5 关卡文件,需在 UE5 编辑器中操作 | 用户根据搭建指南在编辑器中创建 |
|
||||
| 2 | 交互物逻辑 | 交互物仅放置占位标记,不包含交互逻辑代码 | 6b-6f 子任务实现 |
|
||||
| 3 | 收集品逻辑 | 收集品仅放置占位标记,不包含拾取逻辑 | 6b-6f 子任务实现 |
|
||||
| 4 | 物理碰撞设置 | 边界和墙体需启用碰撞,需在编辑器中设置 | 搭建时设置 Collision Preset = BlockAll |
|
||||
| 5 | 材质实例覆盖 | 部分材质需要在编辑器中创建动态材质实例(MI) | 搭建时在 Details 面板设置 |
|
||||
| 6 | Outliner 文件夹分组 | 需在编辑器中手动拖拽 Actor 到对应文件夹 | 搭建时组织 |
|
||||
|
||||
---
|
||||
|
||||
## 六、比例验证结果
|
||||
|
||||
### E1 角色比例检查(待编辑器中执行)
|
||||
|
||||
| 检查项 | 预期结果 | 状态 |
|
||||
|--------|---------|------|
|
||||
| Z1 院门可通过 | 门洞 200cm 宽,主角 120cm 身高 | ⬜ 待验证 |
|
||||
| Z1 房屋门可通过 | WallDoor_200x300 门洞 | ⬜ 待验证 |
|
||||
| Z2 卷帘门可通过 | 400cm 开放门洞 | ⬜ 待验证 |
|
||||
| 室内摄像机不穿墙 | 净高 280cm,摄像机 100cm | ⬜ 待验证 |
|
||||
| 窗台高度 | WallWindow 窗台约 100cm | ⬜ 待验证 |
|
||||
| 桌面高度 | SimpleTable_01 ~75cm | ⬜ 待验证 |
|
||||
|
||||
### E2 流线通行检查(待编辑器中执行)
|
||||
|
||||
| 路径 | 状态 |
|
||||
|------|------|
|
||||
| Z1 院门 → Z3 街道 | ⬜ 待验证 |
|
||||
| Z3 → Z2 小卖部 | ⬜ 待验证 |
|
||||
| Z3 → Z4 空地 | ⬜ 待验证 |
|
||||
| Z3 → Z5 巷子 | ⬜ 待验证 |
|
||||
| Z5 → Z6 水塘边 | ⬜ 待验证 |
|
||||
| Z7 不可到达 | ⬜ 待验证 |
|
||||
|
||||
### E3 已知尺寸偏差(搭建前识别)
|
||||
|
||||
| # | 偏差 | 等级 | 说明 |
|
||||
|---|------|------|------|
|
||||
| 1 | Z5 巷子实际宽度约 260cm vs 设计 300cm | **重大** | Wall 厚度 20cm 占用空间。建议:将东墙东移至 X=2600+20=2620,或接受 260cm 宽度 |
|
||||
| 2 | BarrierWall 高度仅 100cm vs 设计围挡 200cm | 轻微 | 需堆叠 2 层,或改用 Wall_400x300 旋转 90° |
|
||||
| 3 | Building_01 默认尺寸待确认 vs 设计 1200×600×1800 | 轻微 | 需在编辑器中测量并按需缩放 |
|
||||
| 4 | Z3 北墙偏移 480cm vs 区域深度 500cm(PM 审查残留) | 轻微 | 20cm 差异在 500cm 深度中影响极小 |
|
||||
| 5 | 第五章南边界汇总表 "BarricadeWall" 应为 "BarrierWall"(PM 审查残留) | 轻微 | 泛指文本,不影响搭建 |
|
||||
|
||||
---
|
||||
|
||||
## 七、下一步
|
||||
|
||||
1. **用户在 UE5 编辑器中按搭建指南操作**:创建关卡文件 → 按 Phase B→C→D→E 顺序放置 Actor
|
||||
2. **验证阶段**:执行 E1/E2/E3 检查清单,记录实际验证结果
|
||||
3. **更新本报告**:将编辑器中的实际偏差补充到报告
|
||||
4. **PM 验收门审查**:搭建完成后通知 PM 执行 ⑥程序实现验收门审查
|
||||
@@ -1,53 +1,241 @@
|
||||
# 角色控制技术设计文档(v0.1 原型)
|
||||
|
||||
> 任务ID: P-003(部分)
|
||||
> 任务ID: P-007
|
||||
> 对应执行案: `docs/design/prototype/player-controller-execution.md`
|
||||
> 关联系统: 交互系统(输入互斥 + 摄像机控制权交接)、场景系统(碰撞体 + 出生点)
|
||||
> 阶段: 原型
|
||||
> 日期: 2026-06-06
|
||||
> 日期: 2026-06-07
|
||||
|
||||
---
|
||||
|
||||
## 概述
|
||||
|
||||
角色控制系统基于现有 `AChildHoodCharacter` + `AChildHoodPlayerController` 框架进行参数调整和少量代码修改。核心架构(SpringArm 摄像机 + Enhanced Input + CMC 移动)已就绪,v0.1 工作以**配置级调整**为主,不引入新的类或组件。
|
||||
角色控制系统基于现有 `AChildHoodCharacter` + `AChildHoodPlayerController` 框架进行参数调整和少量代码修改。核心架构(SpringArm 摄像机 + Enhanced Input + CMC 移动)已就绪,v0.1 工作以**配置级调整**为主,不引入新的类或组件。同时需要移除跳跃逻辑、添加交互状态标志及交互相关 IA 绑定。
|
||||
|
||||
**实现复杂度**:低
|
||||
**预估工期**:2-3 天
|
||||
**新增/修改代码量**:约 80-100 行 C++
|
||||
**预估工期**:1-2 天
|
||||
**新增/修改代码量**:约 60-80 行 C++(净增约 30 行,删除约 20 行)
|
||||
|
||||
---
|
||||
|
||||
## 类与组件架构
|
||||
## 1. 需求功能点罗列
|
||||
|
||||
### 修改现有类
|
||||
从执行文档中提取每条行为规则,按实现方式分类。
|
||||
|
||||
| 类 | 修改内容 | 代码量 |
|
||||
|----|---------|--------|
|
||||
| `AChildHoodCharacter` | 移除跳跃、调整 CMC/SpringArm 参数、添加交互状态标志、新增交互相关 IA 绑定 | ~60 行 |
|
||||
| `AChildHoodPlayerController` | 调整 Pitch 限幅(通过 CameraManager) | ~5 行 |
|
||||
### UE 内置功能
|
||||
|
||||
### 不新增类
|
||||
以下功能点直接使用 UE5 引擎内置能力,无需或仅需极少量自定义代码:
|
||||
|
||||
v0.1 角色控制系统不引入新类。所有功能通过修改现有类的参数和少量逻辑实现。
|
||||
| 功能点 | 使用的 UE 内置能力 | 对应行为规则 | 备注 |
|
||||
|--------|-------------------|-------------|------|
|
||||
| 摄像机默认位置(3.5m / 0.8m / 15° 俯角) | SpringArm `TargetArmLength` + `SocketOffset` | C1 默认位置 | 构造函数配置 |
|
||||
| 摄像机软跟随(3-5x 角色速度) | SpringArm `CameraLag` + `CameraLagSpeed` | C2 跟随规则 | 构造函数启用 |
|
||||
| 视角水平旋转(150°/s) | Enhanced Input IA + `AddControllerYawInput` | C3 视角旋转 | 键鼠为相对输入,不硬限 °/s |
|
||||
| 视角垂直限幅(+45°/-30°) | `PlayerCameraManager::ViewPitchMin/Max` | C3 视角旋转 | BeginPlay 中设置 |
|
||||
| 摄像机碰撞处理 | SpringArm `bDoCollisionTest` + `ProbeSize` | C4 碰撞处理 | 构造函数启用 |
|
||||
| 跑动中角色背对摄像机 | CMC `bOrientRotationToMovement` + `RotationRate` | C5 跑动背对 | 转向速度 720°/s 远快于鼠标 |
|
||||
| 移动方向相对摄像机(含对角 45°) | Enhanced Input 2D Axis + `AddMovementInput` | M1 移动方向 | 已有 `DoMove()` 满足 |
|
||||
| 角色转向(720°/s,最短路径) | CMC `RotationRate` + 默认最短路径旋转 | M2 角色转向 | 无需修改 |
|
||||
| 跑步速度(4.5 m/s) | CMC `MaxWalkSpeed` | M3 跑步 | 构造函数设置 |
|
||||
| 起步加速(0.2s) | CMC `MaxAcceleration` | M3 跑步 | 450/0.2 = 2250 cm/s² |
|
||||
| 停止减速(0.3s) | CMC `BrakingDecelerationWalking` | M4 停止减速 | 450/0.3 = 1500 cm/s² |
|
||||
| 坡道可行走(≤45°) | CMC `WalkableFloorAngle` | M5 坡道与台阶 | 构造函数设置 |
|
||||
| WASD/方向键移动输入 | Enhanced Input IMC/IA(已有) | I1 移动输入 | 无修改 |
|
||||
| 鼠标视角旋转输入 | Enhanced Input IMC/IA(已有) | I2 视角输入 | 无修改 |
|
||||
|
||||
### 组件挂载关系(不变)
|
||||
### 自定义实现
|
||||
|
||||
以下功能点需要编写自定义 C++ / 蓝图代码:
|
||||
|
||||
| 功能点 | 实现方式概述 | 对应行为规则 | 预估复杂度 |
|
||||
|--------|-------------|-------------|-----------|
|
||||
| 移除跳跃 | 删除 `JumpAction` 成员、`DoJumpStart/End` 函数、Input 绑定 | I4 移除跳跃 | 低 |
|
||||
| 交互中忽略移动输入 | `bIsInteracting` 标志 + `DoMove()` 前置检查 | P1 交互中屏蔽移动 | 低 |
|
||||
| 交互相关 IA 绑定 | 新增 `InteractAction`/`CancelAction`/`SwitchInteractAction` 成员 | I3 交互输入 | 低 |
|
||||
| 交互状态接口 | `SetInteracting()`/`IsInteracting()`/`IsRunning()` 方法 | P3 状态信号 | 低 |
|
||||
| 摄像机控制权交接 | 提供 `FollowCamera` 访问器,交互系统通过 `SetViewTargetWithBlend` 切换 | P2 摄像机控制权 | 低(接口方) |
|
||||
|
||||
> **分类原则**:角色控制系统 90% 需求由 UE 内置能力覆盖,仅交互协调相关逻辑需要自定义。无复杂状态机或自定义算法。
|
||||
|
||||
---
|
||||
|
||||
## 2. 功能领域图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
subgraph 输入层
|
||||
Input[输入处理模块<br/>Enhanced Input 回调]
|
||||
end
|
||||
|
||||
subgraph 核心层
|
||||
Movement[移动控制模块<br/>CMC 参数配置]
|
||||
Camera[摄像机模块<br/>SpringArm 参数配置]
|
||||
CharState[角色状态模块<br/>交互标志 + 查询接口]
|
||||
end
|
||||
|
||||
subgraph 外部系统
|
||||
Interaction[交互系统<br/>读/写角色状态]
|
||||
end
|
||||
|
||||
Input -->|WASD/鼠标| Movement
|
||||
Input -->|鼠标| Camera
|
||||
Input -->|E/ESC/Tab| Interaction
|
||||
Movement -->|bIsInteracting 检查| CharState
|
||||
Interaction -->|SetInteracting| CharState
|
||||
Interaction -->|SetViewTargetWithBlend| Camera
|
||||
CharState -.->|IsInteracting/IsRunning| Interaction
|
||||
```
|
||||
AChildHoodCharacter
|
||||
├── UCapsuleComponent (Root) — 碰撞胶囊体
|
||||
├── USkeletalMeshComponent (Mesh) — 角色网格
|
||||
├── USpringArmComponent (CameraBoom) — 摄像机摇臂
|
||||
└── UCameraComponent (FollowCamera) — 跟随摄像机
|
||||
|
||||
AChildHoodPlayerController
|
||||
├── APlayerCameraManager — 摄像机管理器(设置 Pitch 限幅)
|
||||
└── UEnhancedInputComponent — 输入组件
|
||||
└── IMC 注册(通过 DefaultMappingContexts)
|
||||
### 模块职责说明
|
||||
|
||||
| 模块 | 职责 | 关键输入 | 关键输出 |
|
||||
|------|------|---------|---------|
|
||||
| 输入处理模块 | 接收 Enhanced Input 回调,分发到移动/视角/交互 | WASD、鼠标、E/ESC/Tab | DoMove、DoLook、交互系统调用 |
|
||||
| 移动控制模块 | 通过 CMC 参数控制角色移动行为 | DoMove 方向值 + bIsInteracting 标志 | 角色位置/旋转更新 |
|
||||
| 摄像机模块 | 通过 SpringArm 参数控制摄像机跟随和碰撞 | Controller 旋转 + 碰撞检测结果 | 摄像机位置/旋转 |
|
||||
| 角色状态模块 | 维护交互状态标志,提供查询接口 | 交互系统的 SetInteracting 调用 | IsInteracting/IsRunning 查询结果 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 类设计图
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class AChildHoodCharacter {
|
||||
-USpringArmComponent* CameraBoom
|
||||
-UCameraComponent* FollowCamera
|
||||
-UInputAction* MoveAction
|
||||
-UInputAction* LookAction
|
||||
-UInputAction* MouseLookAction
|
||||
-UInputAction* InteractAction
|
||||
-UInputAction* CancelAction
|
||||
-UInputAction* SwitchInteractAction
|
||||
-bool bIsInteracting
|
||||
+DoMove(float Right, float Forward) void
|
||||
+DoLook(float Yaw, float Pitch) void
|
||||
+SetInteracting(bool bValue) void
|
||||
+IsInteracting() bool
|
||||
+IsRunning() bool
|
||||
+GetFollowCamera() UCameraComponent*
|
||||
}
|
||||
|
||||
class AChildHoodPlayerController {
|
||||
-TArray~UInputMappingContext*~ DefaultMappingContexts
|
||||
#BeginPlay() void
|
||||
#SetupInputComponent() void
|
||||
}
|
||||
|
||||
class USpringArmComponent {
|
||||
+TargetArmLength float
|
||||
+SocketOffset FVector
|
||||
+bEnableCameraLag bool
|
||||
+CameraLagSpeed float
|
||||
+bDoCollisionTest bool
|
||||
+ProbeSize float
|
||||
}
|
||||
|
||||
class UCharacterMovementComponent {
|
||||
+MaxWalkSpeed float
|
||||
+MaxAcceleration float
|
||||
+BrakingDecelerationWalking float
|
||||
+RotationRate FRotator
|
||||
+WalkableFloorAngle float
|
||||
+bOrientRotationToMovement bool
|
||||
}
|
||||
|
||||
AChildHoodCharacter *-- USpringArmComponent : 组合(持有)
|
||||
AChildHoodCharacter *-- UCharacterMovementComponent : 组合(继承自带)
|
||||
AChildHoodCharacter --> AChildHoodPlayerController : 关联(Controller)
|
||||
```
|
||||
|
||||
### 新增类
|
||||
|
||||
无新增类。v0.1 角色控制系统不引入新类或新组件。
|
||||
|
||||
### 修改类
|
||||
|
||||
| 类名 | 修改内容 |
|
||||
|------|---------|
|
||||
| `AChildHoodCharacter` | ① 删除 `JumpAction` 成员及跳跃相关绑定/函数 ② 新增 `InteractAction`/`CancelAction`/`SwitchInteractAction` IA 指针 ③ 新增 `bIsInteracting` 标志 ④ `DoMove()` 添加交互状态检查 ⑤ 新增 `SetInteracting()`/`IsInteracting()`/`IsRunning()` 接口 ⑥ 调整 CMC/SpringArm 构造函数参数 |
|
||||
| `AChildHoodPlayerController` | `BeginPlay()` 中设置 `PlayerCameraManager` 的 Pitch 限幅 |
|
||||
|
||||
### 新增蓝图
|
||||
|
||||
无新增蓝图。v0.1 角色控制系统不创建新蓝图资产。
|
||||
|
||||
---
|
||||
|
||||
## 4. 时序图(仅复杂特性)
|
||||
|
||||
> ⚠️ **跳过**。角色控制系统为纯参数配置 + 简单标志管理,不涉及 3+ 系统协调或复杂分支流程。跨系统交互的时序图在交互系统技术设计文档中绘制。
|
||||
|
||||
---
|
||||
|
||||
## 5. 核心数据结构
|
||||
|
||||
### 角色控制无新增枚举或结构体
|
||||
|
||||
v0.1 角色控制系统不引入新的枚举、结构体或配置数据类。所有配置通过 CMC 和 SpringArm 内置属性完成。
|
||||
|
||||
### AChildHoodCharacter 关键数据定义
|
||||
|
||||
```cpp
|
||||
UCLASS(abstract)
|
||||
class AChildHoodCharacter : public ACharacter
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
// === 配置参数(构造函数设置默认值) ===
|
||||
// 无额外配置参数,全部通过 CMC/SpringArm 内置属性配置
|
||||
|
||||
// === 输入动作(蓝图可覆盖) ===
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* MoveAction; // WASD/方向键移动
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* LookAction; // 手柄视角
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* MouseLookAction; // 鼠标视角
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* InteractAction; // E 键交互(委托交互系统)
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* CancelAction; // ESC 取消(委托交互系统)
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* SwitchInteractAction; // Tab/滚轮切换交互物(委托交互系统)
|
||||
|
||||
// === 运行时状态 ===
|
||||
bool bIsInteracting = false; // 是否正在交互中
|
||||
|
||||
// === 关键接口 ===
|
||||
|
||||
// 移动(交互中忽略输入)
|
||||
UFUNCTION(BlueprintCallable, Category="Input")
|
||||
virtual void DoMove(float Right, float Forward);
|
||||
|
||||
// 视角旋转
|
||||
UFUNCTION(BlueprintCallable, Category="Input")
|
||||
virtual void DoLook(float Yaw, float Pitch);
|
||||
|
||||
// 交互状态控制(供交互系统调用)
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetInteracting(bool bValue);
|
||||
|
||||
// 状态查询(供交互系统/UI 使用)
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||||
bool IsInteracting() const;
|
||||
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||||
bool IsRunning() const;
|
||||
};
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 行为规则 → 实现方案映射
|
||||
## 6. 行为规则 → 实现方案映射
|
||||
|
||||
### 一、摄像机系统
|
||||
|
||||
@@ -57,12 +245,12 @@ AChildHoodPlayerController
|
||||
|
||||
```cpp
|
||||
// AChildHoodCharacter 构造函数
|
||||
CameraBoom->TargetArmLength = 350.0f; // 3.5m 距离
|
||||
CameraBoom->TargetArmLength = 350.0f; // 3.5m 距离
|
||||
CameraBoom->SocketOffset = FVector(0.f, 0.f, 80.f); // 0.8m 高于角色
|
||||
// 初始俯角由 Controller Pitch 控制,在 PlayerController 中设置初始旋转
|
||||
// 俯角由 Controller Pitch 初始值和玩家操作决定,PlayerCameraManager 限制范围
|
||||
```
|
||||
|
||||
**可调参数**:TargetArmLength, SocketOffset.Z
|
||||
**可调参数**:`TargetArmLength`(2.5-5.0m),`SocketOffset.Z`(0.5-1.2m)
|
||||
|
||||
---
|
||||
|
||||
@@ -72,36 +260,37 @@ CameraBoom->SocketOffset = FVector(0.f, 0.f, 80.f); // 0.8m 高于角色
|
||||
|
||||
```cpp
|
||||
CameraBoom->bEnableCameraLag = true;
|
||||
CameraBoom->CameraLagSpeed = 6.0f; // 可调,范围 2-8
|
||||
CameraBoom->CameraLagSpeed = 6.0f; // 可调,范围 2-8
|
||||
CameraBoom->bEnableCameraRotationLag = false; // v0.1 不启用旋转延迟
|
||||
```
|
||||
|
||||
**可调参数**:CameraLagSpeed
|
||||
**可调参数**:`CameraLagSpeed`(2-8)
|
||||
|
||||
---
|
||||
|
||||
#### C3. 视角旋转(水平 150°/s,垂直 +45°/-30°)
|
||||
|
||||
**水平旋转实现**:通过 Enhanced Input IA 的 Value 值 × PlayerController::InputYawScale 控制。
|
||||
**水平旋转**:通过 Enhanced Input IA 的 Scale 值 × `AddControllerYawInput` 控制。
|
||||
|
||||
> 键鼠模式下鼠标移动是相对输入,由玩家手速决定实际旋转速度。执行案中 150°/s 是手柄摇杆的设计参考值,v0.1 优先键鼠,此参数暂不在代码中硬性限制。
|
||||
|
||||
**垂直限幅**:在 `AChildHoodPlayerController::BeginPlay()` 中设置
|
||||
|
||||
```cpp
|
||||
// InputYawScale 在 PlayerController 中设置
|
||||
// 灵敏度通过 IA 的 Scale 值控制,不需要自定义旋转速度限制
|
||||
// UE5 鼠标输入是相对移动,不受固定 °/s 限制
|
||||
// v0.1 使用默认鼠标输入灵敏度,后续版本可加灵敏度滑块
|
||||
void AChildHoodPlayerController::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
// 设置摄像机俯仰角限制
|
||||
if (PlayerCameraManager)
|
||||
{
|
||||
PlayerCameraManager->ViewPitchMin = -30.0f; // 向下看最多 30°
|
||||
PlayerCameraManager->ViewPitchMax = 45.0f; // 向上看最多 45°
|
||||
}
|
||||
// ... 原有移动端触控逻辑
|
||||
}
|
||||
```
|
||||
|
||||
**垂直限幅实现**:在 CameraManager 中设置
|
||||
|
||||
```cpp
|
||||
// AChildHoodPlayerController::BeginPlay 或构造函数中
|
||||
PlayerCameraManager->ViewPitchMin = -30.0f; // 向下看最多 30°
|
||||
PlayerCameraManager->ViewPitchMax = 45.0f; // 向上看最多 45°
|
||||
```
|
||||
|
||||
> 注:执行案中 150°/s 是手柄摇杆的设计参考值。键鼠模式下鼠标移动是相对输入,由玩家手速决定实际旋转速度。v0.1 优先键鼠,此参数暂不在代码中硬性限制。
|
||||
|
||||
**可调参数**:ViewPitchMin, ViewPitchMax, IA Scale
|
||||
**可调参数**:`ViewPitchMin`(-45° ~ -20°),`ViewPitchMax`(+30° ~ +60°),IA Scale
|
||||
|
||||
---
|
||||
|
||||
@@ -111,33 +300,32 @@ PlayerCameraManager->ViewPitchMax = 45.0f; // 向上看最多 45°
|
||||
|
||||
```cpp
|
||||
CameraBoom->bDoCollisionTest = true;
|
||||
CameraBoom->ProbeSize = 12.0f; // 碰撞探针半径
|
||||
CameraBoom->ProbeChannel = ECC_Camera; // 使用 Camera 碰撞通道
|
||||
|
||||
// 最小距离保证:SpringArm 自动缩短到碰撞面
|
||||
// 当目标位置被阻挡时,SpringArm 将摄像机移到最近的未阻挡位置
|
||||
// 默认行为已满足"紧贴碰撞面内侧"的要求
|
||||
CameraBoom->ProbeSize = 12.0f; // 碰撞探针半径
|
||||
CameraBoom->ProbeChannel = ECC_Camera; // 使用 Camera 碰撞通道
|
||||
```
|
||||
|
||||
**最小距离保证**(0.5m):SpringArm 的 `TargetArmLength` 最短会被碰撞面推到约 0(取决于探针半径和角色胶囊体大小)。如需严格保证 0.5m 最小距离,可在蓝图中加 Tick 检查后处理。**v0.1 先用原生行为,视体验再决定是否添加。**
|
||||
- SpringArm 自动缩短摄像机到碰撞面内侧
|
||||
- 碰撞消除后配合 Camera Lag 平滑恢复到 `TargetArmLength`
|
||||
- v0.1 仅处理静态场景几何体碰撞,不处理动态物体
|
||||
- 最小距离保证(0.5m):v0.1 先用原生行为,视实际体验决定是否添加 Tick 后处理
|
||||
|
||||
**恢复**:碰撞消除后 SpringArm 自动恢复到 TargetArmLength,配合 Camera Lag 实现平滑回位。
|
||||
|
||||
**v0.1 简化**:仅处理与静态几何体碰撞(默认行为),不处理动态物体。
|
||||
**可调参数**:`ProbeSize`(8-20),`bDoCollisionTest`
|
||||
|
||||
---
|
||||
|
||||
#### C5. 跑动中角色始终背对摄像机
|
||||
|
||||
**实现**:已有配置满足
|
||||
**实现**:已有配置满足,调整 `RotationRate`
|
||||
|
||||
```cpp
|
||||
bUseControllerRotationYaw = false; // 角色不跟随 Controller Yaw
|
||||
GetCharacterMovement()->bOrientRotationToMovement = true; // 角色朝移动方向旋转
|
||||
bUseControllerRotationYaw = false; // 角色不跟随 Controller Yaw
|
||||
GetCharacterMovement()->bOrientRotationToMovement = true; // 角色朝移动方向旋转
|
||||
GetCharacterMovement()->RotationRate = FRotator(0.f, 720.f, 0.f); // 转向速度 720°/s
|
||||
```
|
||||
|
||||
角色转向速度 720°/s 远快于鼠标旋转速度,自然满足"摄像机追不到角色正面"的效果。无需额外逻辑。
|
||||
角色转向速度 720°/s 远快于鼠标旋转速度(150°/s),自然满足"摄像机追不到角色正面"。
|
||||
|
||||
**可调参数**:`RotationRate.Yaw`(360-1080°/s)
|
||||
|
||||
---
|
||||
|
||||
@@ -145,38 +333,39 @@ GetCharacterMovement()->RotationRate = FRotator(0.f, 720.f, 0.f); // 转向速
|
||||
|
||||
#### M1. 移动方向(相对摄像机,对角 45° 合成)
|
||||
|
||||
**实现**:已有 `DoMove()` 逻辑满足
|
||||
**实现**:已有 `DoMove()` 逻辑满足,无需修改。
|
||||
|
||||
```cpp
|
||||
void AChildHoodCharacter::DoMove(float Right, float Forward)
|
||||
{
|
||||
const FRotator Rotation = GetController()->GetControlRotation();
|
||||
const FRotator YawRotation(0, Rotation.Yaw, 0);
|
||||
const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
|
||||
const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
|
||||
AddMovementInput(ForwardDirection, Forward);
|
||||
AddMovementInput(RightDirection, Right);
|
||||
if (GetController() != nullptr)
|
||||
{
|
||||
const FRotator Rotation = GetController()->GetControlRotation();
|
||||
const FRotator YawRotation(0, Rotation.Yaw, 0);
|
||||
const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
|
||||
const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
|
||||
AddMovementInput(ForwardDirection, Forward);
|
||||
AddMovementInput(RightDirection, Right);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- 对角输入(W+A)由 Enhanced Input 的 2D Axis 自然处理
|
||||
- `AddMovementInput` 不叠加速度(CMC 内部归一化)
|
||||
- 连续旋转中移动方向实时跟随摄像机朝向(每帧重新计算方向)
|
||||
|
||||
**无需修改。**
|
||||
- 对角输入(W+A)由 Enhanced Input 2D Axis 自然处理
|
||||
- `AddMovementInput` 内部归一化,斜向速度不叠加
|
||||
- 每帧重新计算方向,连续旋转中移动方向实时跟随摄像机
|
||||
|
||||
---
|
||||
|
||||
#### M2. 角色转向(720°/s,最短路径,边跑边转)
|
||||
|
||||
**实现**:CMC 参数配置
|
||||
**实现**:CMC 参数配置(同 C5)
|
||||
|
||||
```cpp
|
||||
GetCharacterMovement()->bOrientRotationToMovement = true;
|
||||
GetCharacterMovement()->RotationRate = FRotator(0.f, 720.f, 0.f);
|
||||
```
|
||||
|
||||
CMC 默认走最短路径旋转,转向期间角色持续移动(不"停顿再转向")。**无需修改。**
|
||||
CMC 默认最短路径旋转,转向期间角色持续移动。**无需额外修改。**
|
||||
|
||||
---
|
||||
|
||||
@@ -184,87 +373,89 @@ CMC 默认走最短路径旋转,转向期间角色持续移动(不"停顿再
|
||||
|
||||
**速度**:
|
||||
```cpp
|
||||
GetCharacterMovement()->MaxWalkSpeed = 450.0f; // 4.5 m/s (UE5 1uu = 1cm)
|
||||
GetCharacterMovement()->MaxWalkSpeed = 450.0f; // 4.5 m/s(UE5 1uu = 1cm)
|
||||
```
|
||||
|
||||
**加速**:CMC 的 `MaxAcceleration` 控制加速过程
|
||||
|
||||
**加速度**:
|
||||
```cpp
|
||||
// 从 0 到 450 cm/s 在 0.2s → 加速度 = 450/0.2 = 2250 cm/s²
|
||||
GetCharacterMovement()->MaxAcceleration = 2250.0f;
|
||||
```
|
||||
|
||||
> 注:CMC 加速不是严格线性,受 GroundFriction 等因素影响。2250 是起始值,实际手感需测试微调。
|
||||
> 注:CMC 加速不是严格线性,受 `GroundFriction` 等因素影响。2250 是起始值,需实测微调。
|
||||
|
||||
**可调参数**:`MaxWalkSpeed`(3.5-6.0 m/s),`MaxAcceleration`(1000-4000 cm/s²)
|
||||
|
||||
---
|
||||
|
||||
#### M4. 停止减速(0.3s)
|
||||
|
||||
**实现**:
|
||||
|
||||
```cpp
|
||||
// 从 450 到 0 cm/s 在 0.3s → 减速度 = 450/0.3 = 1500 cm/s²
|
||||
GetCharacterMovement()->BrakingDecelerationWalking = 1500.0f;
|
||||
```
|
||||
|
||||
> 同样受 GroundFriction 影响,1500 是起始值。
|
||||
> 同样受 `GroundFriction` 影响,1500 是起始值。
|
||||
|
||||
**可调参数**:`BrakingDecelerationWalking`(800-2500 cm/s²)
|
||||
|
||||
---
|
||||
|
||||
#### M5. 坡道与台阶(坡度 ≤45°,台阶 ≤0.15m)
|
||||
|
||||
**实现**:
|
||||
|
||||
```cpp
|
||||
GetCharacterMovement()->WalkableFloorAngle = 45.0f; // 最大可行走坡度
|
||||
// 台阶高度由胶囊体半径和 CMC 的 StepHeight 决定
|
||||
// 默认 StepOffset = 45.0f (4.5cm),覆盖 0.15m 需要调大
|
||||
// 但 v0.1 场景设计避免高台阶,先保持默认
|
||||
GetCharacterMovement()->SetWalkableFloorAngle(45.0f);
|
||||
// 台阶:v0.1 场景设计避免高台阶,CMC 默认 StepOffset 可覆盖常规台阶
|
||||
```
|
||||
|
||||
**可调参数**:`WalkableFloorAngle`(30°-60°)
|
||||
|
||||
---
|
||||
|
||||
### 三、输入映射
|
||||
|
||||
#### I1. WASD/方向键 → 移动
|
||||
|
||||
**实现**:已有 IA_Move + IMC 配置。保持不变。
|
||||
已有 `IA_Move` + IMC 配置,保持不变。
|
||||
|
||||
#### I2. 鼠标移动 → 视角旋转
|
||||
|
||||
**实现**:已有 IA_MouseLook + IMC 配置。保持不变。
|
||||
已有 `IA_MouseLook` + IMC 配置,保持不变。
|
||||
|
||||
#### I3. E/ESC/Tab/滚轮 → 委托交互系统
|
||||
|
||||
**实现**:在 Character 中添加交互相关 IA 指针和绑定
|
||||
**实现**:在 `AChildHoodCharacter` 中新增交互相关 IA 指针
|
||||
|
||||
```cpp
|
||||
// 新增成员(AChildHoodCharacter.h)
|
||||
// AChildHoodCharacter.h 新增成员
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* InteractAction; // E 键
|
||||
UInputAction* InteractAction; // E 键
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* CancelAction; // ESC 键
|
||||
UInputAction* CancelAction; // ESC 键
|
||||
|
||||
UPROPERTY(EditAnywhere, Category="Input")
|
||||
UInputAction* SwitchInteractAction; // Tab 键
|
||||
UInputAction* SwitchInteractAction; // Tab 键 / 鼠标滚轮
|
||||
|
||||
// SetupPlayerInputComponent 中绑定
|
||||
// 回调函数直接调用 InteractionManager 的对应接口
|
||||
// 回调函数直接调用交互系统的对应接口(具体实现见交互系统技术设计文档)
|
||||
```
|
||||
|
||||
> 具体回调实现见交互系统技术设计文档。
|
||||
> IMC 中需新增 `IA_Interact`/`IA_Cancel`/`IA_SwitchInteract` 的按键映射。
|
||||
|
||||
#### I4. 移除跳跃
|
||||
|
||||
**实现**:移除 JumpAction 及其绑定
|
||||
**实现**:删除跳跃相关代码
|
||||
|
||||
```cpp
|
||||
// 删除 JumpAction 成员
|
||||
// 删除成员
|
||||
// UPROPERTY(EditAnywhere, Category="Input") UInputAction* JumpAction;
|
||||
|
||||
// 删除 SetupPlayerInputComponent 中的 Jump 绑定
|
||||
// 删除 DoJumpStart/DoJumpEnd 函数
|
||||
// CMC: GetCharacterMovement()->JumpZVelocity 不需要设置(不跳跃)
|
||||
// 删除 DoJumpStart() / DoJumpEnd() 函数
|
||||
// CMC: 不需要设置 JumpZVelocity(不跳跃)
|
||||
```
|
||||
|
||||
---
|
||||
@@ -276,43 +467,78 @@ UInputAction* SwitchInteractAction; // Tab 键
|
||||
**实现**:在 `DoMove()` 中添加状态检查
|
||||
|
||||
```cpp
|
||||
// 新增成员
|
||||
bool bIsInteracting = false;
|
||||
|
||||
// 修改 DoMove
|
||||
void AChildHoodCharacter::DoMove(float Right, float Forward)
|
||||
{
|
||||
if (bIsInteracting) return; // 交互中忽略移动
|
||||
if (bIsInteracting) return; // 交互中忽略移动
|
||||
// ... 原有逻辑
|
||||
}
|
||||
```
|
||||
|
||||
// 外部接口(供 InteractionManager 调用)
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetInteracting(bool bInteracting);
|
||||
```cpp
|
||||
void AChildHoodCharacter::SetInteracting(bool bValue)
|
||||
{
|
||||
bIsInteracting = bValue;
|
||||
}
|
||||
```
|
||||
|
||||
#### P2. 交互中摄像机控制权交接
|
||||
|
||||
**实现**:InteractionManager 在进入交互时通过 `SetViewTargetWithBlend` 切换摄像机目标;退出时切换回 Character。角色控制系统本身不需要修改摄像机逻辑。
|
||||
**实现**:交互系统通过 `SetViewTargetWithBlend` 切换摄像机目标,退出时切回 Character。角色控制系统本身不需要修改摄像机逻辑。
|
||||
|
||||
交互结束后摄像机自动回到 SpringArm 默认跟随(因为 ViewTarget 切回 Character,SpringArm 恢复控制)。
|
||||
交互结束后摄像机自动回到 SpringArm 默认跟随(ViewTarget 切回 Character 后 SpringArm 恢复控制)。
|
||||
|
||||
#### P3. 状态信号提供
|
||||
|
||||
**实现**:提供查询接口
|
||||
|
||||
```cpp
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||||
bool IsInteracting() const { return bIsInteracting; }
|
||||
bool AChildHoodCharacter::IsInteracting() const
|
||||
{
|
||||
return bIsInteracting;
|
||||
}
|
||||
|
||||
UFUNCTION(BlueprintCallable, BlueprintPure)
|
||||
bool IsRunning() const;
|
||||
// IsRunning: GetVelocity().Size() > Threshold && GetCharacterMovement()->IsMovingOnGround()
|
||||
bool AChildHoodCharacter::IsRunning() const
|
||||
{
|
||||
return GetVelocity().SizeSquared() > 100.f // 速度 > 10 cm/s 阈值
|
||||
&& GetCharacterMovement()->IsMovingOnGround();
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 数据流
|
||||
## 7. 美术资源需求
|
||||
|
||||
v0.1 角色控制系统**不直接需要**美术资产。以下为间接需求:
|
||||
|
||||
| 资源类型 | 名称 | 数量 | 规格 | 触发时机/用途 |
|
||||
|----------|------|------|------|---------------|
|
||||
| 占位动画 | Idle(站立待机) | 1 | 简单 T-pose 或 A-pose 即可 | 角色静止时播放;v0.1 可无动画 |
|
||||
| 占位动画 | Run(跑步循环) | 1 | 简单跑步循环 | 角色移动时播放;执行案明确"若无动画,角色滑动也可接受" |
|
||||
|
||||
> v0.1 不包含跳跃、蹲下、攀爬,不需要对应动画。
|
||||
|
||||
---
|
||||
|
||||
## 8. 技术风险与注意事项
|
||||
|
||||
| 风险 | 等级 | 说明 | 缓解措施 |
|
||||
|------|------|------|---------|
|
||||
| 软跟随手感不佳 | 🟢 低 | `CameraLagSpeed` 需要实际测试调整手感 | 多个预设值快速切换测试(推荐 4/6/8 三档) |
|
||||
| 摄像机角落穿墙 | 🟢 低 | 角落/窄空间 SpringArm 碰撞可能出现抖动 | 角落场景专项测试,必要时加大 ProbeSize |
|
||||
| CMC 加速/减速不符合预期 | 🟢 低 | CMC 物理模型不完全线性,受 `GroundFriction` 影响 | 参数范围已预留,实测微调 |
|
||||
| 720°/s 转向过快导致"飘" | 🟢 低 | 无正式动画时转向缺乏视觉过渡 | v0.1 可接受,后续配合动画调整 `RotationRate` |
|
||||
| 背对摄像机效果依赖转向速度比 | 🟢 低 | 若后续降低 `RotationRate` 或提高鼠标灵敏度,效果可能改变 | 保持 `RotationRate` 远大于鼠标旋转速度 |
|
||||
|
||||
### 注意事项
|
||||
|
||||
1. **IMC 资产更新**:新增交互 IA 后需在 IMC 中添加对应按键映射(E/ESC/Tab),此为蓝图操作,不在 C++ 代码中。
|
||||
2. **跳跃移除的完整性**:移除跳跃时需同时检查蓝图中是否有 Jump 相关引用,避免编译警告。
|
||||
3. **bIsInteracting 的线程安全**:v0.1 为单线程游戏,不需要加锁。如后续引入多线程需重新评估。
|
||||
4. **IsRunning 阈值**:速度阈值 10 cm/s(`SizeSquared > 100`)为经验值,可能需要根据实际角色大小调整。
|
||||
|
||||
---
|
||||
|
||||
## 9. 数据流
|
||||
|
||||
### 配置参数流
|
||||
|
||||
@@ -320,8 +546,7 @@ bool IsRunning() const;
|
||||
C++ 构造函数默认值 → 蓝图派生类可覆盖 → 运行时通过 Details 面板微调
|
||||
```
|
||||
|
||||
v0.1 原型阶段所有参数在 C++ 中设置默认值,蓝图可覆盖。不使用 DataAsset 或配置表。
|
||||
批量生产阶段迁移到参数 DataAsset。
|
||||
v0.1 原型阶段所有参数在 C++ 中设置默认值,蓝图可覆盖。批量生产阶段迁移到参数 DataAsset。
|
||||
|
||||
### 运行时状态流
|
||||
|
||||
@@ -329,41 +554,17 @@ v0.1 原型阶段所有参数在 C++ 中设置默认值,蓝图可覆盖。不
|
||||
Enhanced Input (WASD/鼠标)
|
||||
→ AChildHoodPlayerController (IMC 注册)
|
||||
→ AChildHoodCharacter (IA 回调)
|
||||
├─ DoMove() → CMC (AddMovementInput)
|
||||
├─ DoLook() → Controller (AddYawInput/AddPitchInput)
|
||||
├─ DoMove() ─→ bIsInteracting? ─→ CMC (AddMovementInput)
|
||||
├─ DoLook() ─→ Controller (AddYawInput/AddPitchInput)
|
||||
│ → SpringArm (Controller Rotation)
|
||||
│ → Camera (位置/旋转)
|
||||
├─ InteractAction → InteractionManager (委托)
|
||||
└─ bIsInteracting → DoMove() (输入屏蔽)
|
||||
├─ InteractAction/CancelAction/SwitchInteractAction ─→ 交互系统(委托)
|
||||
└─ 交互系统 ─→ SetInteracting(bool) ─→ bIsInteracting 标志
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 美术资源需求
|
||||
|
||||
v0.1 角色控制系统**不直接需要**美术资产。以下为间接需求:
|
||||
|
||||
| 资源类型 | 名称 | 数量 | 规格 | 说明 |
|
||||
|----------|------|------|------|------|
|
||||
| 占位动画 | Idle(站立待机) | 1 | 简单 T-pose 或 A-pose 即可 | v0.1 可无动画 |
|
||||
| 占位动画 | Run(跑步循环) | 1 | 简单跑步循环,角色可在地面滑动 | 执行案明确说"若无动画资源,角色在地面滑动也可接受" |
|
||||
|
||||
> v0.1 角色控制不包含跳跃、蹲下、攀爬,因此不需要对应动画。
|
||||
|
||||
---
|
||||
|
||||
## 技术风险与注意事项
|
||||
|
||||
| 风险 | 等级 | 说明 | 缓解措施 |
|
||||
|------|------|------|---------|
|
||||
| 软跟随手感不佳 | 🟢 低 | CameraLagSpeed 需要实际测试调整 | 多个预设值快速切换测试 |
|
||||
| 摄像机碰撞穿墙 | 🟢 低 | SpringArm 原生碰撞处理基本满足 | 角落/窄空间需额外测试 |
|
||||
| CMC 加速/减速不符合预期 | 🟢 低 | CMC 物理模型不完全线性 | 参数范围已预留,微调即可 |
|
||||
| 角色转身"飘"的感觉 | 🟢 低 | 720°/s 偏快可能导致动画不自然 | v0.1 无正式动画,暂时不是问题 |
|
||||
|
||||
---
|
||||
|
||||
## 可调参数汇总
|
||||
## 10. 可调参数汇总
|
||||
|
||||
所有参数均在构造函数中设置默认值,蓝图可覆盖:
|
||||
|
||||
@@ -372,11 +573,60 @@ v0.1 角色控制系统**不直接需要**美术资产。以下为间接需求
|
||||
| 摄像机距离 | `CameraBoom->TargetArmLength` | 350.0f | 构造函数 |
|
||||
| 摄像机高度 | `CameraBoom->SocketOffset.Z` | 80.0f | 构造函数 |
|
||||
| 跟随速度 | `CameraBoom->CameraLagSpeed` | 6.0f | 构造函数 |
|
||||
| 碰撞检测 | `CameraBoom->bDoCollisionTest` | true | 构造函数 |
|
||||
| 碰撞探针 | `CameraBoom->ProbeSize` | 12.0f | 构造函数 |
|
||||
| 俯角上限 | `CameraManager->ViewPitchMax` | 45.0f | BeginPlay |
|
||||
| 俯角下限 | `CameraManager->ViewPitchMin` | -30.0f | BeginPlay |
|
||||
| 碰撞检测 | `CameraBoom->bDoCollisionTest` | true | 构造函数 |
|
||||
| 跑步速度 | `CMC->MaxWalkSpeed` | 450.0f | 构造函数 |
|
||||
| 加速度 | `CMC->MaxAcceleration` | 2250.0f | 构造函数 |
|
||||
| 减速度 | `CMC->BrakingDecelerationWalking` | 1500.0f | 构造函数 |
|
||||
| 转向速度 | `CMC->RotationRate.Yaw` | 720.0f | 构造函数 |
|
||||
| 可行走坡度 | `CMC->WalkableFloorAngle` | 45.0f | 构造函数 |
|
||||
|
||||
---
|
||||
|
||||
## 11. 文件结构
|
||||
|
||||
```
|
||||
Source/ChildHood/
|
||||
├── ChildHoodCharacter.h # 修改:新增交互 IA、状态标志、查询接口;移除跳跃
|
||||
├── ChildHoodCharacter.cpp # 修改:调整 CMC/SpringArm 参数;修改 DoMove;移除跳跃
|
||||
├── ChildHoodPlayerController.h # 不修改
|
||||
└── ChildHoodPlayerController.cpp # 修改:BeginPlay 中设置 Pitch 限幅
|
||||
|
||||
Content/
|
||||
├── Input/
|
||||
│ ├── IMC_Default.umap # 修改:新增 IA_Interact/IA_Cancel/IA_SwitchInteract 映射
|
||||
│ ├── IA_Interact.uasset # 新增:E 键交互输入动作
|
||||
│ ├── IA_Cancel.uasset # 新增:ESC 取消输入动作
|
||||
│ └── IA_SwitchInteract.uasset # 新增:Tab/滚轮切换输入动作
|
||||
└── Blueprints/
|
||||
└── BP_ChildHoodCharacter # 可能修改:绑定新增 IA 到蓝图属性(若使用蓝图派生)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 工期预估与实现拆分
|
||||
|
||||
### 工作量估算
|
||||
|
||||
| 维度 | 估算 |
|
||||
|------|------|
|
||||
| 总工期 | 1-2 天 |
|
||||
| 修改 C++ 代码 | 约 60-80 行(净增 30 行 + 删除 20 行) |
|
||||
| 新增蓝图 | 3 个 InputAction 资产 + IMC 修改 |
|
||||
| 实现复杂度 | 低 |
|
||||
|
||||
### 实现拆分建议
|
||||
|
||||
| 子任务 | 内容 | 预估时间 | 依赖 | 验证方式 |
|
||||
|--------|------|---------|------|---------|
|
||||
| 6a-1 | 移除跳跃:删除 JumpAction、绑定、函数 | 0.5h | 无 | 编译通过 + 角色不跳跃 |
|
||||
| 6a-2 | 调整 CMC/SpringArm 构造函数参数 | 0.5h | 无 | PIE 中测试移动手感、摄像机跟随 |
|
||||
| 6a-3 | 添加 Pitch 限幅(PlayerController BeginPlay) | 0.5h | 无 | PIE 中测试鼠标上下看限幅 |
|
||||
| 6a-4 | 新增交互状态管理(bIsInteracting + Set/Get) | 0.5h | 无 | 编译通过 + 蓝图可调用 |
|
||||
| 6a-5 | 新增交互 IA 绑定(3 个 InputAction + IMC 修改) | 1h | 6a-4 | PIE 中按 E/ESC/Tab 无报错(回调委托给交互系统) |
|
||||
| 6a-6 | 修改 DoMove 添加交互状态检查 | 0.5h | 6a-4 | 交互中按 WASD 角色不移动 |
|
||||
| 6a-7 | 综合测试:手感微调 + 碰撞测试 + 边界情况 | 1-2h | 6a-1~6 | 全功能验证 |
|
||||
|
||||
> **总预估**:4-5 小时(约 1 个工作日)。预留半天调参和边界测试。
|
||||
|
||||
Reference in New Issue
Block a user