我最近一直在研究Source Engine。更具体地说,他们拥有的扫射/兔子游戏运动。
这是源引擎的实际移动代码。我的问题指向第1779行和第1784行。在此,wishspeed
的值为wishdir's
。虽然向量(wishdir
)是一个归一化向量,但幅度也不会被标准化吗? (所以这将是1的幅度)
据我所知,当事情正常化时会发生什么。如果这是真的,为什么如果wishspeed为1,那么第1784行的if语句会带有if ( wishspeed != 0 && **(wishspeed > mv->m_flMaxSpeed)**)
?进一步研究代码,有更多的暗示希望速度不是0或1,而是更高的值。
有人可以向我解释这有可能吗? 当它应该被标准化时,wishspeed怎么能超过1?
谢谢!
答案 0 :(得分:3)
来自float VectorNormalize(vec)
上的developer.valvesoftware.com:
将矢量除以其长度,将其标准化。修改Vector并返回旧的长度。
wishspeed
采用wishdir
在标准化之前的长度。
答案 1 :(得分:2)