我最近一直在研究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,为什么会有带if ( wishspeed != 0 && **(wishspeed > mv->m_flMaxSpeed)**)的1784行的if语句?进一步查看代码,还有更多暗示希望速度不是0或1,而是更高的值。

有人可以向我解释这怎么可能吗?
当希望将其标准化后,wishspeed如何超过1?

谢谢!

最佳答案

developer.valvesoftware.comfloat VectorNormalize(vec)上:


  将矢量除以其长度,然后对其进行归一化。修改Vector并返回原来的长度。


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

关于c++ - 源引擎-运动代码:什么是“愿望速度”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42448925/

10-10 16:19