战地2 载具代码中级教程 (二)
作者:烧香的熊猫
接上一篇,继续说tweak文件的代码结构。
前面我们说过,tweak文件其实是对con文件的补充。参考原版的各种载具代码我们可以发现,tweak里各种东西出现的顺序貌似有一套固定的格式,先是PCO重载,然后定义装甲,然后定义PCO的物理参数,然后是各个零件的参数定义..........其实这只是表面现象....是因为BF2EDITOR总是按照同一个套路输出tweak文件造成的假象。各个模块在tweak里出现的顺序对引擎的翻译结果结果其实是没有多大影响的(当然,语句的作用域不能搞错了),但为了后期修改和维护的方便,我们还是提倡大家都用BF2EDITOR默认的那种格式对代码进行组织和编辑。
Tweak文件要做的第一件事,就是重开con文件中各个零件的定义(activeSafe语句),并对它们进行参数设定。因此,我们通常在最顶上首先看到的就是activeSafe PlayerControlObject XXXX,即打开该载具对象的定义,并开始进行参数设定。按照原版的风格,接下来通常是依次开始创建Armor、Radio、VehicleHud、WarningHud、HelpHud 五个组件,当然,它们虽然不是必不可少的,但没有它们,这个载具会显得很奇葩。。。。。
接下来通常就是载具本身的各项物理参数的定义了。首先,这里我们要尤其注意两个语句:第一个语句是ObjectTemplate.mapMaterial,这个语句的作用是设定载具的碰撞材质,在con里也是有这个语句的,但它的最后一个参数通常是默认的0,因此我们要在tweak里对它进行重新赋值。例如,飞机通常都有这么一句 ObjectTemplate.mapMaterial 0 Airplane 32,这句话说明了飞机机身使用的材质是航空铝材(Airplane材质),它是由max在导出的时候设定的,当然在导出后我们也可以手动把这个材质改成其他材质,比如Light_Armord_Vehicles(轻装甲),但要注意在tweak和con里要一块改。32这个数字说明的是该材质采用哪种碰撞特效,比如1006是防弹玻璃,我们用枪打的时候就会溅玻璃渣,声音也是子弹打玻璃的声音,102是橡胶,我们用枪打轮胎的时候,才会发出闷响和漏气的音效。这里使用32,因此我们在游戏里用枪打机身,机身上的弹孔才是“铝板”被子弹打个洞的外观,声音也是打铝板的声音。这个数字绝不能乱写,要参考原版的其他载具,该是几就是几,如果乱写,其后果是 —— 能顺利进游戏,能开着载具到处跑,但只要载具受到攻击(枪击炮击或爆炸),游戏立即报错崩溃。第二个语句是aiTemplate,它决定载具使用哪种ai,这个参数对单机游戏来说尤其重要,绝不能错,否则,BOT们就不认识这个载具,其结果是进图的瞬间游戏崩溃弹出。
PCO的参数设定完,就是其他各个零件的参数设定。再往下就是我们自己create的各种东西了,比如导弹发射器、热焰弹发射器、机炮之类的,创建之后,我们要把它添加给PCO(添加的方法很简单,我们前面说过了,一个addTemplate就完事了),以便让引擎知道这个东西从属于该PCO,由这个PCO的控制者使用它。