分享

【LUA教学】2.快速构建场景——生成航母打击群(CSG)

 华cfq5y4ucng3g 2022-07-10 发布于广东
✎ 战 报 看 点  

接续前文【LUA教学】1.快速构建场景——生成1艘美国航母

这次我们学如何添加编队内其他舰艇,还是分两部分,如果仅仅使用不想了解原理,只要看第一部分懒人操作即可。


一、懒人操作(直接粘贴代码)
以编辑模式进入CMO,创建空白场景,按快捷键'Shift+Ctrl+C'启动LUA控制台,将本文涉及的代码粘贴入白色输入框处(LUA中 --两短横代表“注释”)。

图片



--1.先设置阵营名称(side)、侦察预警能力(awareness)、训练水平(proficiency)local R_sides={{side='Red',awareness='Normal',proficiency='Regular'},{side='Blue',awareness='Normal',proficiency='Regular'},{side='Green',awareness='Normal',proficiency='Regular'}}
--编辑一个名叫F_SetupSides的设置阵营函数function F_SetupSides(X_sides) for k,v in ipairs(X_sides) do --ipairs为遍历数组 print('创造阵营: '..v.side) --两个点代表LUA语言的连接字 类似python的+ ScenEdit_AddSide({side=v.side}) ScenEdit_SetSideOptions({side=v.side,awareness=v.awareness,proficiency=v.proficiency}) end ScenEdit_MsgBox ('创造各阵营成功', 1)end--运行函数,设置阵营F_SetupSides(R_sides)--设置阵营关系ScenEdit_SetSidePosture (R_sides[1].side, R_sides[2].side, 'H')ScenEdit_SetSidePosture (R_sides[2].side, R_sides[1].side, 'H')ScenEdit_SetSidePosture (R_sides[1].side, R_sides[3].side, 'U')ScenEdit_SetSidePosture (R_sides[2].side, R_sides[3].side, 'U')ScenEdit_SetSidePosture (R_sides[3].side, R_sides[1].side, 'U')ScenEdit_SetSidePosture (R_sides[3].side, R_sides[2].side, 'U') --2.创建航母local CV_name='乔治布什号航母'
local CV1=ScenEdit_AddUnit({side ='Blue', type ='Ship', name =CV_name, heading=0, dbid=2593, Latitude=24.2719373344468,Longitude=127.579751664124, holdfire=true,speed=0})
ScenEdit_MsgBox ('创造航母成功', 1)--F/A-18C AGM-154A JSOW

for planes = 1, 4, 1 doScenEdit_AddUnit({side = 'Blue',type = 'Air', name = 'VFA-37 公牛中队#'..planes, loadoutid = 3766, dbid = 555, base=CV_name})end
--F/A-18C AGM-154C JSOW
for planes = 5, 8, 1 doScenEdit_AddUnit({side = 'Blue',type = 'Air', name = 'VFA-37 公牛中队#'..planes, loadoutid =3981, dbid = 555, side = 'Blue', base=CV_name})end
--F/A-18F AIM-120D

for planes = 1, 12, 1 doScenEdit_AddUnit({side = 'Blue',type = 'Air', name ='VFA-213 黑狮中队(Black Lions))#'..planes, loadoutid = 15483, dbid =965, side = 'Blue', base=CV_name})end
--F/A-18E GBU-32
for planes = 1, 12, 1 doScenEdit_AddUnit({side = 'Blue',type = 'Air', name = 'VFA-31 汤姆猫中队())#'..planes, loadoutid = 4631, dbid = 753, side = 'Blue', base=CV_name})end
--MH-60R MK54for helicopters = 1, 6, 1 doScenEdit_AddUnit({side = 'Blue',type = 'Air', name = 'HSM-70 斯巴达中队(Spartans)#'..helicopters, loadoutid =1101, dbid = 4356, side = 'Blue', base=CV_name})end
--1、2步骤为前篇文章内容,从此处开始的“3.增加编队内其他舰艇”是本文内容--3.增加编队内其他舰艇local Local1Direct = (CV1.heading + 0)%360local Local1Distance= World_GetPointFromBearing({LATITUDE=CV1.latitude, LONGITUDE=CV1.longitude, DISTANCE=40, BEARING=Local1Direct})
local Local2Direct = (CV1.heading + 30)%360local Local2Distance= World_GetPointFromBearing({LATITUDE=CV1.latitude, LONGITUDE=CV1.longitude, DISTANCE=25, BEARING=Local2Direct})
local Local3Direct = (CV1.heading + 330)%360local Local3Distance= World_GetPointFromBearing({LATITUDE=CV1.latitude, LONGITUDE=CV1.longitude, DISTANCE=30, BEARING=Local3Direct})
local Local4Direct = (CV1.heading + 180)%360local Local4Distance= World_GetPointFromBearing({LATITUDE=CV1.latitude, LONGITUDE=CV1.longitude, DISTANCE=25, BEARING=Local4Direct})
local Local5Direct = (CV1.heading + 120)%360local Local5Distance= World_GetPointFromBearing({LATITUDE=CV1.latitude, LONGITUDE=CV1.longitude, DISTANCE=10, BEARING=Local5Direct})
--艄舰local DDG92= ScenEdit_AddUnit({Side=R_sides[2].side, Type='Ship', Name='DDG92', DBID=2348, Latitude=Local1Distance.latitude, Longitude=Local1Distance.longitude, Heading = CV1.heading})local CG56 = ScenEdit_AddUnit({Side=R_sides[2].side, Type='Ship', Name='CG56 ', DBID=2339, Latitude=Local2Distance.latitude, Longitude=Local2Distance.longitude, Heading = CV1.heading})local DDG103= ScenEdit_AddUnit({Side=R_sides[2].side, Type='Ship', Name='DDG76', DBID=2067, Latitude=Local3Distance.latitude, Longitude=Local3Distance.longitude, Heading = CV1.heading})local DDG79= ScenEdit_AddUnit({Side=R_sides[2].side, Type='Ship', Name='DDG93', DBID=2869, Latitude=Local4Distance.latitude, Longitude=Local4Distance.longitude, Heading = CV1.heading})local AOE6= ScenEdit_AddUnit({Side=R_sides[2].side, Type='Ship', Name='AOE6', DBID=897, Latitude=Local5Distance.latitude, Longitude=Local5Distance.longitude, Heading = CV1.heading})
ScenEdit_MsgBox ('创造编队成功', 1)


视频 演示效果视频

二、使用心得
‍1.CSG航母打击群内其余舰艇都是以航母为圆心配属的。
图片

一般是:1艘防空巡洋舰在航母前方40海里处警戒,其余驱逐舰/巡洋舰距航母8~10海里环状铺开,1艘航行补给舰在航母近距一侧。1-2艘攻击型核潜艇在沿途/后方50千米警戒。如果升空预警机及掩护的战斗机,则距航母100~280千米飞行,战斗机距航母50~185千米飞行,反潜巡逻机距航母90~370千米飞行。

图片

因此,为了实现以航母为圆心配属,在布放其他兵力时,就要用到下面讲到的方法,即:相对航母方位来设置属舰。

2.相对航母的位置和方向,来增加其他属舰:①CV1.heading属性代表航母航向,来设置驱逐舰相对航母的方向(比如舷角120°);②需要用到函数“World_GetPointFromBearing”,获得距离(比如距离10海里),配合①生成经纬度;③根据经纬度值生成驱逐舰位置。具体如下:
local Local5Direct = (CV1.heading + 120)%360 --驱逐舰相对航母CV1的方向local Local5Distance= World_GetPointFromBearing({LATITUDE=CV1.latitude, LONGITUDE=CV1.longitude, DISTANCE=10, BEARING=Local5Direct})--驱逐舰相对航母距离10 nmlocal DDG92= ScenEdit_AddUnit({Side=R_sides[2].side, Type='Ship', Name='DDG92', DBID=2348, Latitude=Local1Distance.latitude, Longitude=Local1Distance.longitude, Heading = CV1.heading})--设置生成驱逐舰的位置

3.自己动手:通过学习前一篇文章和本文,你应该学会如何编辑自己的蓝方航母编队了吧,自己动手试试为驱逐舰增加直升机,调整编队配属等等如果还不会,我会把“一步到位”的加强版代码分享至“兵推圈”知识星球,供粉丝下载使用

更多内容

图片

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多