9.0 KiB
9.0 KiB
05 · 移动系统规范
所属文档集 ← 返回索引
摘要:玩家移动的物理模型、跳跃机制、冲刺、墙壁力学与手感参数。
目录
1. 移动设计目标
| 目标 | 实现方式 |
|---|---|
| 精确可控 | 即时响应方向输入,没有"滑动"惯性 |
| 灵活多样 | 多种移动选项(跳跃、冲刺、墙跳、空中冲刺) |
| 手感沉重 | 快速下落(fall multiplier),跳跃顶点缓降 |
| 容错空间 | 土狼时间、跳跃缓冲降低输入失误惩罚 |
| 进阶可深 | 空中冲刺+墙跳的组合技深度 |
2. 地面移动
2.1 水平移动
| 状态 | 速度 | 说明 |
|---|---|---|
| 行走(轻推摇杆) | walkSpeed |
6 units/s |
| 奔跑(全推摇杆) | runSpeed |
9 units/s |
- 水平速度即时响应输入,无加速/减速惯性
- 松开输入时立即停止(不滑行)
设计决策:不使用加速/减速曲线
原因:类银河恶魔城强调精确跳台,惯性会使平台跳跃难以预判落点
2.2 朝向
- 朝向随水平输入即时翻转
- 攻击/技能状态中锁定朝向(不随输入改变)
3. 跳跃模型
3.1 跳跃类型
| 类型 | 触发条件 | 初速度 | 备注 |
|---|---|---|---|
| 地面跳跃 | 地面 + 跳跃键 | jumpForce |
标准跳跃 |
| 土狼跳 | 离地后 coyoteTime 内 + 跳跃键 |
jumpForce |
视为地面跳跃 |
| 双跳 | 空中 + 跳跃键 + DoubleJump 已解锁 + 未使用过 |
doubleJumpForce |
每次落地重置 |
| 墙跳(背墙) | 贴墙 + 跳跃键 | 水平: wallJumpAwayHForce,垂直: wallJumpVerticalForce |
背离墙壁方向 |
| 墙跳(对墙) | 贴墙 + 朝墙方向 + 跳跃键 | 水平: wallJumpTowardHForce,垂直: wallJumpVerticalForce |
朝墙壁方向 |
3.2 可变跳跃高度
松开跳跃键时,若玩家垂直速度仍向上,截断为原值的 50%。
→ 长按获得完整跳跃高度;短按获得约一半高度。
3.3 重力模型
使用非对称重力以获得"果断"手感:
| 阶段 | 重力倍率 |
|---|---|
| 上升阶段 | ×1.0(基础重力) |
| 下落阶段 | ×fallMultiplier(默认 2.5) |
| 短跳(松键后上升) | ×lowJumpMultiplier(默认 2.0) |
| 跳跃顶点(速度接近 0) | 短暂降低至 ×0.6(缓降感) |
3.4 跳跃缓冲(Jump Buffer)
在落地前 jumpBufferDuration(默认 0.15s)内按下跳跃键,落地后立即触发跳跃。
→ 消除玩家"刚好落地后跳跃失败"的挫败感。
4. 冲刺系统
4.1 地面冲刺
| 参数 | 值 | 说明 |
|---|---|---|
| 方向 | 当前朝向(水平,不可向上/下) | 地面冲刺只能水平 |
| 速度 | dashSpeed (18 units/s) |
远高于跑步速度 |
| 时长 | dashDuration (0.18s) |
固定时长 |
| 冷却 | dashCooldown (0.5s) |
冷却期间不可再冲刺 |
| 无敌帧 | 冲刺全程 | 不受任何伤害 |
| 穿透 | 可穿过敌人 | 不被敌人阻挡 |
4.2 冲刺取消
冲刺中不可被低优先级状态打断。但以下情况可中断:
- 受到
Unblockable攻击(仅此一项,普通攻击在冲刺无敌期间被忽略)
5. 墙壁力学
5.1 墙抓(WallGrab)
默认解锁,不需要能力门
当玩家在空中贴近可抓取的墙壁并输入朝墙方向时,进入 WallGrabState:
| 行为 | 说明 |
|---|---|
| 悬挂 | 玩家停止下落,附着在墙上 |
| 高度记忆 | 记录抓墙时的 Y 坐标(wallGrabAnchorY) |
| 超出记忆值 | 玩家可向上爬(无上限) |
| 低于记忆值 | 按 wallGrabSlideSpeed 缓慢下滑(不快速下落) |
| 持续时间 | 无时间限制(可一直抓) |
5.2 墙跳类型
| 类型 | 触发 | 水平冲力 | 垂直冲力 |
|---|---|---|---|
| 背墙跳 | 跳跃键(无方向或反向) | wallJumpAwayHForce (10) |
wallJumpVerticalForce (15) |
| 对墙跳 | 朝墙方向 + 跳跃键 | wallJumpTowardHForce (3) |
wallJumpVerticalForce (15) |
背墙跳弹离效果强,用于快速脱离;对墙跳爬升效果强,用于沿墙向上攀爬。
设计决策:两种墙跳共用垂直分量
原因:统一手感基准,区别仅在水平表现
5.3 墙跳后的输入锁定
背墙跳后:
- 水平方向输入锁定 0.1s(防止玩家立即贴回同一面墙)
6. 空中冲刺(Aerial Dash)
需要解锁
AerialDash能力
6.1 基本规则
| 参数 | 值 | 说明 |
|---|---|---|
| 方向 | 8 方向(摇杆方向量化) | 与地面冲刺最大区别 |
| 速度 | aerialDashSpeed (15 units/s) |
略低于地面冲刺 |
| 时长 | aerialDashDuration (0.20s) |
|
| 无敌帧 | 冲刺全程 | 同地面冲刺 |
| 充能次数 | 默认 1 次(护符可升至 2 次) | 每次空中各自独立 |
6.2 充能重置条件
| 触发条件 | 说明 |
|---|---|
| 落地 | 触地瞬间恢复 |
| 墙跳成功 | 墙跳给予新的空中冲刺机会 |
| 近战攻击命中 | 命中敌人即恢复(鼓励进攻性空中移动) |
| 弹反成功 | 弹反视为命中,给予恢复 |
设计决策:命中恢复充能
原因:这是《丝之歌》核心机制,使得玩家可以通过激进攻击保持永续空中移动。
体验目标:顶级玩家应该能通过攻击和弹反的组合在空中无限机动。
6.3 方向量化规则
摇杆输入方向量化为 8 个标准方向(45° 间隔):
- 上/下/左/右(4 个主方向)
- 左上/右上/左下/右下(4 个斜方向)
- 若无输入,默认朝当前朝向水平冲刺
7. 下冲(Plunge)
无需解锁,基础能力
7.1 触发条件
空中 + 向下方向输入 + 冲刺键
(优先级高于普通空中冲刺)
7.2 行为规范
| 阶段 | 说明 |
|---|---|
| 激活 | 取消垂直速度,施加极大向下速度(plungeSpeed = 28 units/s) |
| 下冲中 | 全程无敌帧;保留少量水平速度(原值 ×0.2) |
| 落地 | 触发冲击波 AoE,范围内敌人受伤 + 强硬直 |
| 落地后 | 轻微弹起(verticalBounce = 4 units/s)→ 回 IdleState |
| 充能消耗 | 消耗 1 次空中冲刺充能(与 AerialDash 共享) |
7.3 冲击波参数
| 参数 | 值 |
|---|---|
| 冲击波半径 | 2.0 units |
| 冲击伤害 | 基础攻击 ×2.0 |
| 硬直时长 | 0.8s |
| 是否可弹反 | 否 |
8. 地面与碰撞检测
8.1 地面检测
- 在角色脚部发起小矩形区域检测,检测 Ground 层
- 每帧更新,检测结果对外暴露为只读属性
isGrounded - 单向平台(OneWayPlatform):
- 从下方跳跃时穿过(检测忽略该层)
- 站在上方时视为地面
- 向下 + 跳跃键:临时忽略单向平台层,允许下穿
8.2 土狼时间(Coyote Time)
离开地面后(如走出平台边缘)的 coyoteTime(默认 0.12s)内仍视为"在地面":
- 这段时间内可触发地面跳跃
- 只对自然离地有效(跳跃后不产生土狼时间)
8.3 墙壁检测
- 在角色左右两侧各发出一条水平射线
- 检测 Wall 层
- 结果:
isWallLeft/isWallRight - 区分"可抓墙"和"不可抓墙"(通过墙壁属性标记)
9. 移动配置参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
walkSpeed |
6.0 | 地面行走速度(units/s) |
runSpeed |
9.0 | 地面奔跑速度(units/s) |
jumpForce |
16.0 | 跳跃初始垂直速度 |
doubleJumpForce |
14.0 | 双跳初始垂直速度 |
wallJumpAwayHForce |
10.0 | 背墙跳水平分量 |
wallJumpTowardHForce |
3.0 | 对墙跳水平分量 |
wallJumpVerticalForce |
15.0 | 墙跳垂直分量 |
wallJumpInputLockDuration |
0.1s | 背墙跳后水平输入锁定时长 |
wallGrabSlideSpeed |
2.0 | 抓墙下滑速度(低于记忆高度时) |
dashSpeed |
18.0 | 地面冲刺速度 |
dashDuration |
0.18s | 地面冲刺时长 |
dashCooldown |
0.5s | 冲刺冷却时间 |
aerialDashSpeed |
15.0 | 空中冲刺速度 |
aerialDashDuration |
0.20s | 空中冲刺时长 |
plungeSpeed |
28.0 | 下冲速度 |
plungeImpactRadius |
2.0 | 下冲冲击波半径 |
plungeBounceForce |
4.0 | 落地后弹起速度 |
fallMultiplier |
2.5 | 下落额外重力倍率 |
lowJumpMultiplier |
2.0 | 短跳额外重力倍率 |
apexGravityScale |
0.6 | 跳跃顶点重力缩减倍率 |
coyoteTimeDuration |
0.12s | 土狼时间窗口 |
jumpBufferDuration |
0.15s | 跳跃预输入缓冲窗口 |
groundCheckSize |
(0.8, 0.05) | 地面检测矩形尺寸 |
wallCheckDistance |
0.1 | 墙壁检测射线长度 |