先带大家简单了解一下关于KZ物理引擎的基础知识(详见以下视频):
https://www.bilibili.com/video/BV18HCtYyEjd
V为原速度矢量;Accelspeed为A/D按键方向(Wishdir)上的速度矢量,其计算公式为Wishspeed*AA/FPS,在默认参数10AA+100FPS的情况下,Accelspeed[max]=250*10/100=25,它与Yaw轴的夹角恒等90度,所以我们可以通过左右移动鼠标(旋转Yaw)间接旋转Accelspeed矢量方向;θ为矢量V与矢量Accelspeed的夹角。
由平行四边形/三角形定则可得出:新(即下一帧)的速度矢量V[new]=sqrt(V^2+Accelspeed^2+2*V*Accelspeed*cosθ)。
将原速度矢量V与新速度矢量V[new]的夹角定义为j,那么由正弦定理可得出一个等式:即Accelspeed/sinj=V/sin(θ-j),经过三角恒等变换整理后j=arctan(Accelspeed*sinθ/(V+Accelspeed*cosθ))。
若要最大化速度增益,则要通过上文中提到的左右移动鼠标带动Yaw与Accelspeed旋转以控制V与Accelspeed的夹角θ保持最佳值:由KZ(CS1.6)物理引擎空中加速部分的源代码可推导出速度增益最大化时的最佳夹角θ[opt]=arccos((30-Accelspeed[max])/V)=arccos((30-25)/V)=arccos(5/V)。
https://www.bilibili.com/video/BV18HCtYyEjd
V为原速度矢量;Accelspeed为A/D按键方向(Wishdir)上的速度矢量,其计算公式为Wishspeed*AA/FPS,在默认参数10AA+100FPS的情况下,Accelspeed[max]=250*10/100=25,它与Yaw轴的夹角恒等90度,所以我们可以通过左右移动鼠标(旋转Yaw)间接旋转Accelspeed矢量方向;θ为矢量V与矢量Accelspeed的夹角。
由平行四边形/三角形定则可得出:新(即下一帧)的速度矢量V[new]=sqrt(V^2+Accelspeed^2+2*V*Accelspeed*cosθ)。
将原速度矢量V与新速度矢量V[new]的夹角定义为j,那么由正弦定理可得出一个等式:即Accelspeed/sinj=V/sin(θ-j),经过三角恒等变换整理后j=arctan(Accelspeed*sinθ/(V+Accelspeed*cosθ))。
若要最大化速度增益,则要通过上文中提到的左右移动鼠标带动Yaw与Accelspeed旋转以控制V与Accelspeed的夹角θ保持最佳值:由KZ(CS1.6)物理引擎空中加速部分的源代码可推导出速度增益最大化时的最佳夹角θ[opt]=arccos((30-Accelspeed[max])/V)=arccos((30-25)/V)=arccos(5/V)。
