今天拓展了武器系统,初步实现了无弹道枪械武器,总结如下
一般来说,射击游戏中的枪械武器大致会分两种,有弹道和无弹道,也就是顺发武器与投弹武器
- 无弹道:通过向确定的射击方向发射一条射线,射线将对接触到的物体捕捉并返回,也就是LineTrace
- 有弹道:借助物理引擎实现
首先在射击时肯定是需要获取射击方向与射击位置的,由于游戏中玩家观察世界的方式是通过摄像机,摄像机又位于角色的后方,这就必然会牵扯到摄像机与人物在Transform上的一些运算,这些运算主要集中在确定LineTrace的起始点与结束点上
在这些运算过程中,会用到以下变量
- CD(camear direction) (摄像机当前朝向)
- CP(camear position)(摄像机当前位置)
- RP(role position)(角色当前位置)
- VP(vector projection) (相机到角色的距离在 CD上的投影)
- SSP(shoot start point)(射击起始点)
- SEP(shoot end point)(射击结束点)
- WR(weapon range) (武器射程)
定义好变量以后,就直接上公式了
第一步:求VP
VP = CD * DotProducr(RP-CP, CD)
第二步:求SSP
SSP = CP + VP
第三步:求SEP
SEP = ASP + AD * WR
第四步:LineTrace
LineTrace(SSP , SEP)
网友评论