afsim中将导弹作为独立的platform
很多时候,导弹都是作为weapon挂载到某个平台上,导弹需要依赖某平台才能具有毁伤功能。但是我不想让导弹挂载,想让它作为独立的platform并且具有毁伤功能。
以下是我做出来的具有毁伤功能的小demo(本人是初学者,如有不当的地方请轻点喷)。
1.首先定义被攻击者carrier_1(舰船):
定义一个SHIP的platform_type,再详细具体的实例化,添加side、position等等数据,作为一个静态的实体。并添加destructible表示可以被毁伤。
# Ships platform_type SHIP WSF_PLATFORM icon carrier end_platform_type # 航母实例 platform carrier_1 SHIP side blue position 17:13:10.81n 38:29:59.06w altitude 0.0 feet heading 0 degrees destructible end_platform2.定义导弹平台
要想要导弹具有毁伤功能,就要给它定义的很全面。
先定义导弹平台类型,包括用什么icon在界面上显示,设置导弹长度,以及是否可毁伤。
#导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m # 可毁伤属性 destructible end_platform_type然后给该导弹添加了雷达特征(也可以添加其他的特征,但是我暂时还没有学到其他的特征):
#雷达散射截面 (RCS) 定义 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE constant 1 m^2 ## 恒定 RCS 值 1 平方米 end_radar_signature在导弹平台类型定义中引用该雷达特征:
#导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m #雷达特征 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE # 可毁伤属性 destructible end_platform_type此时一个静态的导弹算是定义好了,但是严格意义上它还不是导弹,还需要添加相应的气动参数,所以我定义了一套气动参数:
#气动模型定义 aero CRUISE_MISSILE_AERO WSF_AERO #diameter 0.68m cd_zero_subsonic 0.3 # 亚声速零升阻力系数 cd_zero_supersonic 0.45 # 超声速零升阻力系数 mach_begin_cd_rise 0.850 # 阻力开始上升的马赫数 mach_end_cd_rise 1.150 # 阻力上升结束的马赫数 mach_max_supersonic 2.000 # 最大超声速马赫数 reference_area 0.028 m2 # 参考面积 (平方米) cl_max 7.000 # 最大升力系数 aspect_ratio 14.000 # 展弦比 end_aero气动参数主要在导弹的运行过程中体现,所以还需要给导弹添加mover才可以。这里我选择的是WSF_GUIDED_MOVER运动模型,这是一个制导模型,专用于导弹的运动模型。在导弹平台类型定义中添加该运动模型,并且在运动模型中引用气动参数。
#导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m #雷达特征 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE #运动模型 mover WSF_GUIDED_MOVER aero CRUISE_MISSILE_AERO empty_mass 2500 kg # 空载质量 (千克) fuel_mass 800 kg # 燃料质量 (千克) update_interval 0.5 s #更新间隔 0.5s # thrust 8000 nt # 推力 (牛顿) specific_impulse 300 s # 比冲 (秒) burn_rate 2.718 kg/sec # 燃料燃烧率 (千克/秒) end_mover # 可毁伤属性 destructible end_platform_type光添加运动模型还不够,与其相对应的是WSF_GUIDANCE_COMPUTER制导计算机,所以还需要添加WSF_GUIDANCE_COMPUTER。
#导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m #雷达特征 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE #运动模型 mover WSF_GUIDED_MOVER aero CRUISE_MISSILE_AERO empty_mass 2500 kg # 空载质量 (千克) fuel_mass 800 kg # 燃料质量 (千克) update_interval 0.5 s #更新间隔 0.5s # thrust 8000 nt # 推力 (牛顿) specific_impulse 300 s # 比冲 (秒) burn_rate 2.718 kg/sec # 燃料燃烧率 (千克/秒) end_mover #制导计算机 processor guidance_computer WSF_GUIDANCE_COMPUTER proportional_navigation_gain 10.0 # 比例导引系数,数值越大航线越平直 velocity_pursuit_gain 10.0 #速度追踪增益,数值越大机头指向目标越快 g_bias 1.0 #重力偏置,1.0 表示完全补偿重力 maximum_commanded_g 25.0 g # 最大指令过载 (25g) guidance_delay 0.0 sec #制导延迟,0 秒表示无延迟 end_processor # 可毁伤属性 destructible end_platform_type还需添加引信,才能触发爆炸效果:
#导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m #雷达特征 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE #运动模型 mover WSF_GUIDED_MOVER aero CRUISE_MISSILE_AERO empty_mass 2500 kg # 空载质量 (千克) fuel_mass 800 kg # 燃料质量 (千克) update_interval 0.5 s #更新间隔 0.5s # thrust 8000 nt # 推力 (牛顿) specific_impulse 300 s # 比冲 (秒) burn_rate 2.718 kg/sec # 燃料燃烧率 (千克/秒) end_mover #制导计算机 processor guidance_computer WSF_GUIDANCE_COMPUTER proportional_navigation_gain 10.0 # 比例导引系数,数值越大航线越平直 velocity_pursuit_gain 10.0 #速度追踪增益,数值越大机头指向目标越快 g_bias 1.0 #重力偏置,1.0 表示完全补偿重力 maximum_commanded_g 25.0 g # 最大指令过载 (25g) guidance_delay 0.0 sec #制导延迟,0 秒表示无延迟 end_processor # 引信 (地面目标触发) processor fuse WSF_GROUND_TARGET_FUSE hit_proximity_range 300 ft end_processor # 可毁伤属性 destructible end_platform_type此时导弹平台类型定义完成。完成以上这些做到了让导弹以某种方式飞向目标。但是此时导弹还未具备毁伤功能。
3.定义导弹杀伤效果
定义导弹的毁伤功能。
#战斗部杀伤效果定义 weapon_effects CRUISE_MISSILE WSF_SPHERICAL_LETHALITY #杀伤半径范围 minimum_radius 30 m maximum_radius 50 m #伤害值范围 minimum_damage 0.1 maximum_damage 1.0 #阈值伤害 (低于此值忽略) threshold_damage 0.2 # 杀伤规律指数:1 = 线性,2 = 平方,浮点数 exponent 1.0 #允许附带伤害 incidental_damage_allowed true end_weapon_effects并将该定义在导弹平台类型中引用。
#导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m #引用导弹的毁伤功能 weapon_effects CRUISE_MISSILE #雷达特征 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE #运动模型 mover WSF_GUIDED_MOVER aero CRUISE_MISSILE_AERO empty_mass 2500 kg # 空载质量 (千克) fuel_mass 800 kg # 燃料质量 (千克) update_interval 0.5 s #更新间隔 0.5s # thrust 8000 nt # 推力 (牛顿) specific_impulse 300 s # 比冲 (秒) burn_rate 2.718 kg/sec # 燃料燃烧率 (千克/秒) end_mover #制导计算机 processor guidance_computer WSF_GUIDANCE_COMPUTER proportional_navigation_gain 10.0 # 比例导引系数,数值越大航线越平直 velocity_pursuit_gain 10.0 #速度追踪增益,数值越大机头指向目标越快 g_bias 1.0 #重力偏置,1.0 表示完全补偿重力 maximum_commanded_g 25.0 g # 最大指令过载 (25g) guidance_delay 0.0 sec #制导延迟,0 秒表示无延迟 end_processor # 引信 (地面目标触发) processor fuse WSF_GROUND_TARGET_FUSE hit_proximity_range 300 ft end_processor # 可毁伤属性 destructible end_platform_type此时便可以定义导弹的具体实例了。
4.定义导弹的具体实例
包括side、position等等参数。on_initialize是定义该导弹以什么样的北东地的坐标飞,朝着哪个目标飞。以及在什么时候执行。
platform cruise_missile_1 CRUISE_MISSILE side red position 15:44:21.94n 37:33:10.81w altitude 16404.2 feet heading 0 degrees track platform carrier_1 end_track on_initialize PLATFORM.SetVelocityNED(500,500,0); PLATFORM.SetCurrentTarget(WsfSimulation.FindPlatform("carrier_1").MakeTrack()); end_on_initialize execute at_time 0.1 s absolute end_execute end_platform此时以warlock的形式运行,便可以看到导弹会飞向舰船,并且命中爆炸。
但是以上这个demo有问题:舰船与导弹的距离过远会导致导弹未飞到目标变爆炸。我认为是气动参数以及燃料的消耗速率的问题。因为我定义的这一套气动参数与消耗速率不是真实数据,所以会导致偏差。
以下是该demo的全代码。我定义了两个舰船两个导弹。
# AFSIM Scenario File # Generated: 2026-04-24T02:59:58.757Z # Ships platform_type SHIP WSF_PLATFORM icon carrier end_platform_type # 航母实例 platform carrier_1 SHIP side blue position 17:13:10.81n 38:29:59.06w altitude 0.0 feet heading 0 degrees destructible end_platform # 驱逐舰实例 platform destroyer_1 SHIP side blue position 18:25:08.94n 34:46:17.03w altitude 200 feet heading 0 degrees destructible end_platform #雷达散射截面 (RCS) 定义 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE constant 1 m^2 ## 恒定 RCS 值 1 平方米 end_radar_signature #气动模型定义 aero CRUISE_MISSILE_AERO WSF_AERO #diameter 0.68m cd_zero_subsonic 0.3 # 亚声速零升阻力系数 cd_zero_supersonic 0.45 # 超声速零升阻力系数 mach_begin_cd_rise 0.850 # 阻力开始上升的马赫数 mach_end_cd_rise 1.150 # 阻力上升结束的马赫数 mach_max_supersonic 2.000 # 最大超声速马赫数 reference_area 0.028 m2 # 参考面积 (平方米) cl_max 7.000 # 最大升力系数 aspect_ratio 14.000 # 展弦比 end_aero #导弹平台类型定义 platform_type CRUISE_MISSILE WSF_PLATFORM icon aim-120 length 8.3 m #添加武器毁伤效果 weapon_effects CRUISE_MISSILE #雷达特征 radar_signature CRUISE_MISSILE_RADAR_SIIGNATURE #运动模型 mover WSF_GUIDED_MOVER aero CRUISE_MISSILE_AERO empty_mass 2500 kg # 空载质量 (千克) fuel_mass 800 kg # 燃料质量 (千克) update_interval 0.5 s #更新间隔 0.5s # thrust 8000 nt # 推力 (牛顿) specific_impulse 300 s # 比冲 (秒) burn_rate 2.718 kg/sec # 燃料燃烧率 (千克/秒) end_mover #制导计算机 processor guidance_computer WSF_GUIDANCE_COMPUTER proportional_navigation_gain 10.0 # 比例导引系数,数值越大航线越平直 velocity_pursuit_gain 10.0 #速度追踪增益,数值越大机头指向目标越快 g_bias 1.0 #重力偏置,1.0 表示完全补偿重力 maximum_commanded_g 25.0 g # 最大指令过载 (25g) guidance_delay 0.0 sec #制导延迟,0 秒表示无延迟 end_processor # 引信 (地面目标触发) processor fuse WSF_GROUND_TARGET_FUSE hit_proximity_range 300 ft end_processor # 可毁伤属性 destructible end_platform_type #战斗部杀伤效果定义 weapon_effects CRUISE_MISSILE WSF_SPHERICAL_LETHALITY #杀伤半径范围 minimum_radius 30 m maximum_radius 50 m #伤害值范围 minimum_damage 0.1 maximum_damage 1.0 #阈值伤害 (低于此值忽略) threshold_damage 0.2 # 杀伤规律指数:1 = 线性,2 = 平方,浮点数 exponent 1.0 #允许附带伤害 incidental_damage_allowed true end_weapon_effects # 武器定义 (将平台类型与战斗部关联) weapon CRUISE_MISSILE_WEAPON WSF_EXPLICIT_WEAPON launched_platform_type CRUISE_MISSILE # 发射后生成的平台类型 weapon_effects CRUISE_MISSILE # 关联的战斗部效果 end_weapon #巡航导弹实例 platform cruise_missile_1 CRUISE_MISSILE side red position 15:44:21.94n 37:33:10.81w altitude 16404.2 feet heading 0 degrees track platform carrier_1 end_track on_initialize PLATFORM.SetVelocityNED(500,500,0); PLATFORM.SetCurrentTarget(WsfSimulation.FindPlatform("carrier_1").MakeTrack()); end_on_initialize execute at_time 0.1 s absolute end_execute end_platform platform cruise_missile_2 CRUISE_MISSILE side red position 19:02:38.61n 34:44:50.49w altitude 16404.2 feet heading 180 degrees track platform destroyer_1 end_track on_initialize PLATFORM.SetVelocityNED(500,500,0); #north east ground PLATFORM.SetCurrentTarget(WsfSimulation.FindPlatform("destroyer_1").MakeTrack()); end_on_initialize execute at_time 0.1 s absolute end_execute end_platform end_time 2 h要注意的是
# 武器定义 (将平台类型与战斗部关联) weapon CRUISE_MISSILE_WEAPON WSF_EXPLICIT_WEAPON launched_platform_type CRUISE_MISSILE # 发射后生成的平台类型 weapon_effects CRUISE_MISSILE # 关联的战斗部效果 end_weapon这一部分没有用到,可以不写。
