Исходный движок — код движения: что такое «Wishspeed»?

В последнее время я смотрю на движок Source. Точнее говоря, это движение типа strafing / bunnyhopping, которое у них есть.

https://github.com/ValveSoftware/source-sdk-2013/blob/56accfdb9c4abd32ae1dc26b2e4cc87898cf4dc1/sp/src/game/shared/gamemovement.cpp#L1779

Вот фактический код движения для исходного движка. Мой вопрос указывает на линии 1779 и 1784. Здесь wishspeed дается значение wishdir's величина. Хотя когда вектор (wishdir) — нормализованный вектор, не нормализуется ли величина тоже? (Так что это будет величина 1)

Насколько я понимаю, это то, что происходит, когда что-то нормализуется. Если это правда, почему оператор if строки 1784 с if ( wishspeed != 0 && **(wishspeed > mv->m_flMaxSpeed)**), если WishSpeed ​​равен 1? Если заглянуть дальше в код, то есть больше подсказок о том, что WishSpeed ​​не равен 0 или 1, а имеет более высокое значение.

Может ли кто-нибудь объяснить мне, как это возможно?
Как скорость может быть больше 1, когда она должна быть нормализована?

Спасибо!

0

Решение

От developer.valvesoftware.com на float VectorNormalize(vec) :

Делит вектор на его длину, нормализуя его. Изменяет Вектор и возвращает старую длину.

wishspeed берет длину wishdir раньше, чем это было нормализовано.

3

Другие решения

На этой странице операция документирована:

https://developer.valvesoftware.com/wiki/Vector

VectorNormalize () возвращает исходную длину вектора.

2

По вопросам рекламы [email protected]