游戏机制•游戏机制
移动 Movement
移动是Teeworlds和DDrace的核心机制,包括重力、跳跃、水平移动和高级技巧
移动Movement重力跳跃水平移动最大速度
2024-01-01
移动是 Teeworlds 和 DDrace 的核心方面之一。
基础
重力
每个 tick 由于重力,加速度 0.5 被添加到 y 速度(向下)。
跳跃
跳跃特性:
- 跳跃会设置 y 速度,抵消任何之前的向上或向下速度
- 这在需要停止大垂直冲量的场景中非常有用
水平移动
不按键时
按相反方向键时
按 A 或 D 加速时
重要提示:
- 按住按键时忽略摩擦
- 因此,在高速度时,什么都不按比向相反方向移动能让 tee 更快减速
- 因为摩擦会有指数级减速,而
a/d是线性减速
高级
最大速度
最大速度:6000 子图块/Tick(一个 tick 内的 +加速,例如重力、喷气背包、爆炸)。
源码实现:
cpp
// src/game/gamecore.cpp(在从速度计算新位置之前)
if(length(m_Vel) > 6000)
m_Vel = normalize(m_Vel) * 6000;水平移动瓶颈:
- 垂直移动的瓶颈是 6000 子图块/Tick
- 在水平移动中,一个"斜坡"值乘以水平速度
- 导致 tee 在速度过快时减速并停止
- 这最常见于加速器中
精度问题:
- 速度每个 tick 向下舍入到 1/256 的精度
- 这导致 tee 在速度过快时停止水平移动
角落掠过
tee 被认为在地面只是因为它的位置和到地面的距离 —— 它不需要 tee 有向下速度。因此,tee 在向上移动时可能被"接地",只要 tee 掠过图块的角落。
角落掠过的作用:
- 允许 tee 刷新其二段跳(在跳过地图如 Impetuous 时有用)
- 可以在短时间内对 tee 应用地面加速度和最大速度(假设 tee 的水平空中速度在角落掠过之前小于最大地面速度)
应用场景:
- 角落掠过不常在地图部分中有意使用(除了 Short and Precise 7 等地图)
- 但可以在短速通中用作小优化
高处跳跃
即使 tee 在地面上方几个子单位,也可以执行地面跳跃。
小提示
- 重力每 tick 增加 0.5 的向下速度
- 地面跳跃速度(-13.2)比二段跳(-12.0)更强
- 高速时松开按键比按反方向键减速更快(指数级 vs 线性)
- 最大速度为 6000 子图块/Tick
- 角落掠过可以刷新二段跳,在某些地图中很有用
- 即使离地面几个子单位也能执行地面跳跃