Files
zeling_v2/Docs/DesignSpec/05_MovementSystem.md
2026-05-08 11:04:00 +08:00

9.0 KiB
Raw Permalink Blame History

05 · 移动系统规范

所属文档集 ← 返回索引
摘要:玩家移动的物理模型、跳跃机制、冲刺、墙壁力学与手感参数。


目录

  1. 移动设计目标
  2. 地面移动
  3. 跳跃模型
  4. 冲刺系统
  5. 墙壁力学
  6. 空中冲刺Aerial Dash
  7. 下冲Plunge
  8. 地面与碰撞检测
  9. 移动配置参数

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 墙壁检测射线长度