Движение
Движение - один из основных аспектов Teeworlds и DDrace.
Основы
Гравитация
Каждый тик к скорости y (вниз) добавляется ускорение 0,5, вызванное гравитацией.
Прыжки
Прыжки на землю устанавливают скорость y тии на -13.2, увеличенную на значение.
Прыжок в воздух (двойной прыжок) устанавливает скорость y тройника на -12.0, увеличенную на значение.
Прыжок "устанавливает" скорость y, отменяя любую предыдущую скорость вверх или вниз. Это очень полезно в сценариях, где необходимо остановить большой вертикальный импульс.
Горизонтальное движение
- Ничего не нажимать:
- Земля: Каждый тик
velocity.x = velocity.x * 0.5
. - Воздух: Каждый тик
velocity.x = velocity.x * 0.95
.
- Земля: Каждый тик
- Нажатие клавиши в противоположном направлении:
- Земля: Каждый такт горизонтальная скорость уменьшается на 2, пока не будет достигнуто 10 в противоположном направлении.
- Воздух: Каждый тик горизонтальная скорость уменьшается на 1.5 до достижения 5 в противоположном направлении.
- Увеличение горизонтальной скорости при нажатии a или d:
- Земля: Каждый тик горизонтальная скорость увеличивается на 2, пока не будет достигнуто 10
- Воздух: Каждый тик горизонтальная скорость увеличивается на 1.5, пока не будет достигнуто 5.
Трение игнорируется при удерживании нажатой клавиши. Таким образом, при высоких скоростях нажатие ни на что не замедлит тии быстрее, чем движение в противоположном направлении, поскольку трение будет иметь экспоненциальное замедление по сравнению с линейным замедлением a/d
.
Дополнительно
Максимальная скорость
Максимальная скорость: 6000 субтилов/тик (+ускорение за один тик, например, гравитация, реактивный ранец, взрыв).
src/game/gamecore.cpp
(перед вычислением новой позиции из скорости):
if(length(m_Vel) > 6000)
m_Vel = normalize(m_Vel) * 6000;
Это узкое место в вертикальном движении. При горизонтальном движении "рампа"-значение умножается на горизонтальную скорость. Это приводит к тому, что тии замедляется и останавливается, когда становится слишком быстрым. Чаще всего это наблюдается при ускорении.
Скорость округляется вниз с точностью каждый тик. Это приводит к тому, что тии перестает двигаться горизонтально при слишком большой скорости.
Обезжиривание углов
Тии считается находящимся на земле только благодаря своему положению и расстоянию до земли - для этого не требуется, чтобы тройник имел скорость вниз. Таким образом, тройник может быть "приземлен" во время движения вверх, если только тройник задевает угол плитки.
Обрезка углов:
- позволяет тии обновить свой двойной прыжок (полезно при прохождении таких карт, как Impetuous).
- может применить ускорение земли и максимальную скорость к тии на короткое время (при условии, что горизонтальная скорость тии в воздухе меньше максимальной скорости земли перед пропуском угла).
Обрезка углов не часто намеренно используется в частях карты (за исключением таких карт, как Short and Precise 7), но может быть использована в коротких спидранах в качестве небольшой оптимизации.
Прыжок с высоты
Прыжок на землю может быть выполнен, даже если тройник находится в нескольких субъединицах над землей.