
上一篇沿调用链跟踪了一次开枪的全过程,其中FireShot里有一行代码:constRay ray=m_owner-AimRayAt(timeInFrame);这条射线从哪里发出?是玩家的眼睛(摄像机),还是枪口?本文讨论这个问题。它看起来只是一个起点的选择,实际上牵涉到瞄准手感、近距离遮挡、第一人称渲染、第三人称视角和网络同步。说明:代码延续上一篇的简化自研引擎风格,类名和函数名为虚构,数学部分可以直接使用。一、矛盾从哪里来1.1 同一把枪,有三个"枪口"在一个典型的 FPS 中,与开枪相关的位置至少有三个:准星(屏幕中心)