源引擎-运动代码:什么是"wishspeed"?
Source engine - movement code: What is "wishspeed"?
我最近一直在研究 Source 引擎。更具体地说,他们有 strafing/bunnyhopping 种运动。
这里是源引擎的实际移动代码。我的问题指向第 1779 和 1784 行。这里,wishspeed
的值是 wishdir's
大小。虽然当向量(wishdir
)是归一化向量时,幅度不会也被归一化吗? (所以它的幅度为 1)
据我了解,这就是标准化后发生的情况。如果这是真的,为什么1784行的if语句中有if ( wishspeed != 0 && **(wishspeed > mv->m_flMaxSpeed)**)
,如果wishspeed为1?进一步查看代码,有更多暗示 wishspeed 不是 0 或 1,而是更高的值。
有人可以向我解释这是怎么可能的吗?
wishspeed 应该归一化,怎么会超过 1?
谢谢!
在此页面上记录了该操作:
https://developer.valvesoftware.com/wiki/Vector
VectorNormalize() returns向量的原始长度。
从 developer.valvesoftware.com 到 float VectorNormalize(vec)
:
Divides the vector by its length, normalising it. Modifies the Vector and returns the old length.
wishspeed
采用 wishdir
标准化前的长度。
我最近一直在研究 Source 引擎。更具体地说,他们有 strafing/bunnyhopping 种运动。
这里是源引擎的实际移动代码。我的问题指向第 1779 和 1784 行。这里,wishspeed
的值是 wishdir's
大小。虽然当向量(wishdir
)是归一化向量时,幅度不会也被归一化吗? (所以它的幅度为 1)
据我了解,这就是标准化后发生的情况。如果这是真的,为什么1784行的if语句中有if ( wishspeed != 0 && **(wishspeed > mv->m_flMaxSpeed)**)
,如果wishspeed为1?进一步查看代码,有更多暗示 wishspeed 不是 0 或 1,而是更高的值。
有人可以向我解释这是怎么可能的吗? wishspeed 应该归一化,怎么会超过 1?
谢谢!
在此页面上记录了该操作:
https://developer.valvesoftware.com/wiki/Vector
VectorNormalize() returns向量的原始长度。
从 developer.valvesoftware.com 到 float VectorNormalize(vec)
:
Divides the vector by its length, normalising it. Modifies the Vector and returns the old length.
wishspeed
采用 wishdir
标准化前的长度。