我最近一直在研究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.com在float VectorNormalize(vec)
上:
将矢量除以其长度,然后对其进行归一化。修改Vector并返回原来的长度。wishspeed
采用wishdir
标准化之前的长度。
关于c++ - 源引擎-运动代码:什么是“愿望速度”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42448925/