源引擎 - 移动代码:什么是“wishspeed”?

时间:2017-02-24 21:52:01

标签: c++ vector source-engine

我最近一直在研究Source Engine。更具体地说,他们拥有的扫射/兔子游戏运动。

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

这是源引擎的实际移动代码。我的问题指向第1779行和第1784行。在此,wishspeed的值为wishdir's。虽然向量(wishdir)是一个归一化向量,但幅度也不会被标准化吗? (所以这将是1的幅度)

据我所知,当事情正常化时会发生什么。如果这是真的,为什么如果wishspeed为1,那么第1784行的if语句会带有if ( wishspeed != 0 && **(wishspeed > mv->m_flMaxSpeed)**)?进一步研究代码,有更多的暗示希望速度不是0或1,而是更高的值。

有人可以向我解释这有可能吗? 当它应该被标准化时,wishspeed怎么能超过1?

谢谢!

2 个答案:

答案 0 :(得分:3)

来自float VectorNormalize(vec)上的developer.valvesoftware.com

  

将矢量除以其长度,将其标准化。修改Vector并返回旧的长度。

wishspeed采用wishdir在标准化之前的长度。

答案 1 :(得分:2)

在此页面上记录操作:

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

VectorNormalize()返回向量的原始长度。