导弹偏离轨道的原因在于:导弹在下落段因为我们修改数值加快之后,导致弹道修正系数来不及做出相应的调整,导弹就已经到达地点爆炸,说白了就是原版的导弹速度是18,下落时候的弹道修正系数正好对应使得导弹落到目标点,但是你换成25或者更高速度的数值时,导弹的弹体仅仅转向了原来的一半或者80%,导弹就落地爆炸了,好比你驾驶一个热气球从目标上空飞过往下扔一颗炸弹和你驾驶一架SU30以超音速模式投同样一颗炸弹,而二者的修正系数却都是热气球的修正系数,那么SU30扔的炸弹百分之百得扔飞。
我们可以从几方面进行修改,先说最直观的
Dmist Missile Control代码段里面的修正
里面有一行代码是DMislTurnRate=0.08; 这个代表弹头修正角度的大小,0.08数值对应18的飞行速度就足够刚刚命中目标,但是更多的话显然这个数值就不够,我们可以把它加大,如果保证其他数值不变动,导弹我们修改速度成36的话,其修正值改成0.16就足够保证命中目标了
接下来代码段里有一行是DMislAltitude=768; 这行代表导弹飞行到768高度进行水平飞行。刚刚说了,修正系数不足导致弹体转向不够,其中导弹飞行距离也是一个影响参数。把768换成1536,而修正系数保持在0.08,也能实现36速度下的导弹转向足够调整方向。
除了这两个参数之外,我们还可以在外部修改,RA2中有两个参数命令是描述飞行器起飞和降落状态的。当然,有一个前提是飞行器可以起降,语句是Landable=yes。描述起降的是 PitchSpeed和PitchAngle,仰俯速度和仰俯角,前者是相对值,默认1.0;后者是实际值,默认是20(单位:度) Dmisl控制段和代码段没有加入这两条语句,不过不妨碍我们调用它们,如不修改弹头修正系数和飞行高度的前提下,速度值修改为36,将语句加入[DMISL]描述代码段中
PitchSpeed=0.4 / 1.0
PitchAngle=20(默认不添加的情况) / 5
即表示导弹在起飞和降落时的速度是平时飞行的0.4倍,下落俯角为与地面法线夹角20度(RA2中全部飞机都是垂直起降,其PitchAngle值为0);注意PitchSpeed不要修正为0.5,它们和原数据不成线性关系。原因是导弹在此语句生效后是匀加速运动,无畏舰导弹抛投方式的加速度默认值是3。所以单纯的认为是线性关系会让导弹弹道失准。 如果上述值改为斜线后边的,即表示导弹下落角度为与地面法线夹角5度(与海平面夹角85度)。不过最后这一种在高速情况下很难模拟,最大的可能是导弹绕了一个大弧度却仍然擦出目标范围。游戏中的结果就是导弹高速情况下修正系数不够导致转向不够,直接飞出目标范围继续飞行。最后这个仰俯角多作为配合修正使用。 还有,这两条语句的优先级不高,不会覆盖DMislPitchFinal和DMislAcceleration语句。
再说最后一个影响弹道较轻微的因素就是Projectile里面的invisiblehigh。这个抛投方式多数引用的武器是激光武器和电磁武器,speed多数是100,因此我们可以在这里,将Acceleration=0添加进去(默认3),只不过这么修改的缺点是其他实弹引用此类型的加速度同样会被取消,而且设定的速度值很大,而描述代码段[DMISL]中没有写入Accelerate=,需要自己添加,到达最大速度后其他不修改的轨迹将和其原轨迹一样。所以最初我从acceleration入手修正的办法被抛弃了。
最后说点有意思的修正,我们不仅可以将原弹道模拟出来,还可以将导弹飞行方式自己做出修改,比如模拟出战斧巡航导弹的高升空降落天顶攻击轨迹,将水平飞行数值加大,仰俯角数值改成0-5;再比如模拟一下SS-N-25的掠海式飞行,将水平飞行数值减少,加大弹头修正值系数和降落数值以及俯角角度等。 需要注意的是导弹水平飞行数值有个下限,大概在300到350之间,导弹可能就要水平飞行失败而直线飞行直到飞出地图,还有修正值和俯角的数值关系要把握好,过大会出现导弹瞬间从水平飞行转向攻顶模式,图片转换生硬不自然。