全站通知:

武器索敌详述

阅读

  ·  

2022-06-04更新

  ·  

最新编辑:負けん気な瞳

阅读:

  

更新日期:2022-06-04

  

最新编辑:負けん気な瞳

刷新 历史
编辑WIKI
来自碧蓝航线WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
Carrier5by5
大老师伊格
井号5467
个人认证:bilibili 知名游戏UP主
負けん気な瞳
指挥官大人~欢迎来到碧蓝航线WIKI,您可以通过百度搜索“碧蓝航线WIKI 碧蓝海事局”直达本WIKI!如果是第一次来访的话,按“Ctrl+D”可以收藏WIKI随时查看更新哦~如果觉得WIKI好玩的话,记得安利给更多人哟ヾ(o◕∀◕)ノ。
,请注意时效性


概述

武器整个攻击流程中,有许多重要的步骤,包括武器的索敌、武器的瞄准和子弹的追踪。它们都涉及目标的位置坐标。

武器的索敌:按照一定方式选取要攻击的目标。

武器的瞄准:获取目标的位置,以便开火瞬间射出的子弹迅速指向敌人。

子弹的追踪:部分子弹能够在射出后,根据目标的位置,调整子弹的运动方向。

武器索敌的流程

总结

一般情况下,对海武器的索敌,首先会无视处于隐蔽状态的主力舰船在水下的潜艇,然后按照检测范围类型进行筛选,最后选择距离最近的敌人作为目标。

一般武器

对于一般武器,索敌流程如下:

  1. 首先,将所有敌方在场舰船单位放入索敌名单,从索敌名单中先剔除处于隐蔽状态的主力舰船
    • 这一步骤主要用于PVE中的敌方,确保敌方不会攻击己方处于隐蔽状态的主力舰船。
    • 这一步骤也用于PVP中,则是确保敌方和己方都不会攻击对方处于隐蔽状态的主力舰船。
  2. 然后,根据武器的检测条件进一步筛选
    • 大部分武器的检测条件为水面。反潜武器的检测条件为水下
    • 如果检测条件为水面,则剔除在水下的潜艇
    • 如果检测条件为水下,则首先剔除水面的舰船。然后,根据潜艇是否被侦测到,来决定是否剔除下潜中的潜艇
      • 如果潜艇被反潜声呐侦测到,则不剔除。
      • 如果潜艇没被反潜声呐侦测到,则剔除
  3. 接着,根据武器的检测范围类型进一步筛选
    • 大部分武器的检测范围类型为扇形,航空炸弹、航空集束雷、航空火箭弹等武器的检测范围类型为矩形
    • 武器的检测范围类型将在下面“武器的检测范围类型”章节中介绍
  4. 最后,根据武器持有者的目标选择属性表,筛选攻击目标。
    • 武器持有者指舰船或舰载机。
    • 大多数情况下,目标选择属性表为。部分情况,目标选择属性表不为无。
    • 如果目标选择属性表为,则选择距离最近的敌人作为目标。
      • 如果多个敌人都是距离最近的单位,优先选择后面出场的敌人。
    • 如果目标选择属性表不为无,则根据目标选择属性表中权重最高的标记,在具有对应标记的单位中随机选取任意一个单位作为目标。
      • 标记权重(数字越大,权重越高):
        • 夜战照明标记为11
        • 集火标记为99
      • 如果没有任意单位具有夜战照明标记,则选择距离最近的敌人作为目标。
      • 如果多个敌人都是距离最近的单位,优先选择后面出场的敌人。
    • 有些情况,目标选择属性表不为无:
      • 厌战·改技能神射手·改提供的效果“选择最远目标,我方皇家主力编队自动跨射瞄准其目标单位概率提高”
        • 厌战·改会给皇家的战巡、战列、重炮的目标选择属性表添加集火标记
        • 厌战·改释放神射手·改的弹幕时,会给敌方最远的单位挂上集火标记
      • 主线第14章,夜战天气会给己方和敌方提供特殊效果
        • 夜战天气会给目标选择属性表添加夜战照明标记
        • 敌方在己方生成的照明区域时,敌方会被挂上夜战照明标记。己方在敌方生成的照明区域的情况同理

防空武器

对于防空武器,索敌流程如下:仅是将一般武器第1步的索敌名单换成所有敌方在场飞机单位。

  1. 其他步骤与一般武器的相同。
  2. 第1步则是将所有敌方在场飞机单位放入索敌名单,从索敌名单中剔除处于不可被攻击状态的飞机
    • 对于大部分飞机,在略超出战斗场景的一定范围外时,就处于不可被攻击状态。

后排跨射武器(战列炮、后排导弹)

对于后排跨射武器(战列炮、后排导弹),第1炮索敌流程如下:

  1. 其他步骤与一般武器的相同
  2. 第3步后多加1步,根据是否失去夜战隐蔽单位权重来筛选:
    • 对于主线14章,优先在失去夜战隐蔽的敌人中进行筛选,选择其中权重最高的敌人
      • 如果多个敌人都是权重最高的单位,那一起纳入,留到第4步再进行处理。
    • 对于非主线14章,优先选择权重最高的敌人
      • 如果多个敌人都是权重最高的单位,那一起纳入,留到第4步再进行处理。


其他补充:

  1. 自律模式下,在系统自动按下跨射按钮时,战列武器就开始进行索敌行为,比开炮行为早很多。
    • 也就是第1炮先索敌,再进入转镜头和时停,最后才到开炮。
  2. 战列炮第1炮后的攻击,靠隐藏技能来引导
    • 系统通过隐藏技能使战列继续跨射,其间隔时间为1秒
      • 即第1炮过1秒后,开第2炮。第2炮过1秒后,开第3炮。
    • 隐藏技能中,后续跨射的目标选择方式为随机选择
    • 随机选择机制的具体内容,请看下方对技能武器的讨论

自动发射导弹武器(前排导弹)

对于自动发射导弹武器,索敌流程如下:

  1. 其他步骤与一般武器的相同
  2. 第4步换成优先选择权重最高的单位。
    • 如果多个敌人都是权重最高的单位,优先选择前面出场的敌人。

手操鱼雷(前排鱼雷)

对于手操鱼雷武器,索敌流程如下:

  1. 其他步骤与一般武器的相同
  2. 第4步换成优先选择权重最高的单位。
    • 如果多个敌人都是权重最高的单位,在这些敌人中随机选择一个

技能武器

对于技能武器,索敌流程与非武器技能选择目标的流程类似,即按照技能指定的单种或多种目标选择方式,不断对所有敌方在场单位进行筛选,选出满足条件的目标。

  • 如果目标选择方式为“无”,则不选择目标。无目标情况下,对武器瞄准的影响请参阅下方的“武器的瞄准”章节

下面介绍常见的技能武器索敌方式:

    • 即不选择目标
  1. 选择非隐蔽单位
    • 先将场上所有存活的敌人纳入索敌名单
    • 剔除不小于敌人常规活动区域右边界的敌人
      • 对于大部分PVE地图,右边界对应 x = 20 的直线
    • 剔除处于隐蔽状态的主力舰船
      • 这一步骤主要用于PVP中,确保敌方和己方都不会攻击对方处于隐蔽状态的主力舰船。
    • 剔除在水下的潜艇
    • 索敌名单中剩余敌人则用于后面以下几种方式
      • 随机抽取
      • 权重最高优先
      • 距离最近优先
      • 距离最远优先
  2. 随机抽取
    • 按照选择非隐蔽单位方式,选出索敌名单
    • 从中随机抽取1名敌人,作为目标
  3. 权重优先
    • 按照选择非隐蔽单位方式,选出索敌名单
    • 从中选取权重最高的敌人
      • 如果只有一名敌人具有最高权重,则该敌人作为目标
      • 如果有多名敌人具有最高权重,则从中随机抽取1名敌人,作为目标
  4. 距离最近优先
    • 按照选择非隐蔽单位方式,选出索敌名单
    • 从中选取距离最近的敌人
    • 根据情况,进行不同处理
      • 如果只有一名敌人具有最近距离,则该敌人作为目标
      • 如果有多名敌人具有最近距离,则从中选择前面出场的敌人,作为目标
  5. 距离最远优先
    • 按照选择非隐蔽单位方式,选出索敌名单
    • 从中选取距离最远的敌人
    • 根据情况,进行不同处理
      • 如果只有一名敌人具有最远距离,则该敌人作为目标
      • 如果有多名敌人具有最远距离,则从中选择前面出场的敌人,作为目标

武器的检测范围类型

扇形

索敌流程的总结

对于检测范围类型为扇形的武器,索敌流程如下:

  1. 将超出索敌范围(这里侧重海平面上的距离)的敌人,从索敌名单中剔除
    • 因为Unity游戏引擎的坐标系是以y轴正方向为正上方,所以游戏内的海平面对应的XZ平面。
  2. 将超出索敌角度(这里侧重海平面上的角度)的敌人,从索敌名单中剔除。
    • 因为Unity游戏引擎的坐标系是以y轴正方向为正上方,所以游戏内的海平面对应的XZ平面。

索敌流程

对于检测范围类型为扇形的武器,索敌流程如下:

  1. 将超出索敌范围(这里侧重海平面上的距离)的敌人,从索敌名单中剔除
    • 因为Unity游戏引擎的坐标系是以y轴正方向为正上方,所以游戏内的海平面对应的XZ平面。
    • 对应敌人的坐标为(x,y,z), 武器持有者的坐标为(a,b,c),对应敌人与武器持有者的距离为d
      • 求出 d = sqrt[(x - a)^2 + (z - c)^2]。(sqrt[...]表示开平方函数)
    • 根据 d 做判断
      • 如果 最小范围 ≤ d ≤ 最大范围,则判定该敌人在索敌范围内,在名单中保留该敌人。
      • 如果 d < 最小范围d > 最大范围,则判定该敌人超出索敌范围,从名单中剔除该敌人。
  2. 将超出索敌角度(这里侧重海平面上的角度)的敌人,从索敌名单中剔除。
    • 因为Unity游戏引擎的坐标系是以y轴正方向为正上方,所以游戏内的海平面对应的XZ平面。
    • 对应敌人的坐标为(x,y,z), 武器持有者的坐标为(a,b,c),武器持有者指向对应敌人的向量为m,x轴正方向的向量为n
      • 求出m和n的向量夹角θ,θ = arctan[(z - c) / (x - a)]
    • 武器的索敌角度为α
      • 求出最小角度 = -α / 2,最大角度 = α / 2
    • 根据 θ 做判断
      • 如果 最小角度 ≤ θ ≤ 最大角度,则判定该敌人在索敌角度内,在名单中保留该敌人。
      • 如果 θ < 最小角度θ > 最大角度,则判定该敌人超出索敌角度,从名单中剔除该敌人。

部分武器的索敌参数

舰载机的平行雷也采用扇形检测机制,但装备界面中没有列举出相关数据。这里就补充一下。

  • 武器相关数据:
    • 2 x 机载鱼雷-通用的索敌范围为75,索敌角度为20。
    • 3 x 机载鱼雷-通用的索敌范围为75,索敌角度为24。
    • 4 x 机载鱼雷-通用的索敌范围为75,索敌角度为28。

矩形

索敌流程的总结

对于检测范围类型为矩形的武器,索敌流程如下:

  1. 利用之前的索敌名单,生成两个子名单,然后取它们的交集作为结果。
  2. 在索敌名单中,对超出索敌范围(这里侧重x轴方向上的距离)的敌人,从索敌名单中剔除,生成子名单1
  3. 在索敌名单中,选出指定范围内权重最高的敌人,并从索敌名单中剔除其他敌人,生成子名单2
    • 如果多个敌人都是权重最高的单位,这些敌人都保留
  4. 取两个子名单的交集作为结果。
    • 如果两个子名单不存在交集,则结果为,即没有目标。

索敌流程

对于检测范围类型为矩形的武器,索敌流程如下:

  1. 利用之前的索敌名单,生成两个子名单,然后取它们的交集作为结果。
  2. 在索敌名单中,对超出索敌范围(这里侧重x轴方向上的距离)的敌人,从索敌名单中剔除,生成子名单1
    • 武器持有者与敌人的横向坐标差为d
      • 求出d = (目标距离的x轴坐标 - 武器持有者的x轴坐标) * 武器持有者的朝向
      • 对于己方,武器持有者的朝向 = 1。对于敌方,武器持有者的朝向 = -1
    • 前向范围为F (F必大于0),后向范围为B
    • 根据 d 做判断
      • 如果 B < 0,若 |B| ≤ d ≤ F,则判定该敌人在索敌范围内,在名单中保留该敌人。
        • 否则,判定该敌人超出索敌范围,从名单中剔除该敌人。
      • 如果 B ≥ 0,若 0 < d ≤ F(d > 0时) 或 B < d < 0(d < 0时),则判定该敌人在索敌范围内,在名单中保留该敌人。
        • 否则,判定该敌人超出索敌范围,从名单中剔除该敌人。
  3. 在索敌名单中,筛选出指定范围内权重最高的敌人,并从索敌名单中剔除其他敌人,生成子名单2
    • 先计算出分界线,分界线 L = 武器持有者的x轴坐标 + B * 武器持有者的朝向 * (-1)
      • 对于己方,武器持有者的朝向 = 1。对于敌方,武器持有者的朝向 = -1
    • 然后,根据武器持有者的朝向和分界线,筛选敌人
      • 如果武器持有者的朝向 = 1(即己方),选出 L ≤ 目标距离的x轴坐标 的敌人,剔除其他敌人
      • 如果武器持有者的朝向 = -1(即敌方),选出 目标距离的x轴坐标 ≤ L 的敌人,剔除其他敌人
    • 接着,选出权重最高的敌人
      • 如果多个敌人都是权重最高的单位,这些敌人都保留
  4. 取两个子名单的交集作为结果。
    • 如果两个子名单不存在交集,则结果为,即没有目标。

部分武器的索敌参数

下表中将用到武器持有者与敌人的横向坐标差,用d表示,计算公式为:d = (目标距离的x轴坐标 - 武器持有者的x轴坐标) * 武器持有者的朝向

  • 对于己方,武器持有者的朝向 = 1。
  • 对于敌方,武器持有者的朝向 = -1

鱼雷机的集束雷

  • Ju87 D-4鱼雷机释放 3 x 机载鱼雷-铁血 时,有两颗雷会比投弹点向前6个单位。这个属于Ju87 D-4鱼雷机独有的弹幕样式机制,与矩形检测无关。
武器名称 索敌范围
机载鱼雷-重樱 10 ≤ d ≤ 25
机载鱼雷-铁血 10 ≤ d ≤ 25


战斗机和轰炸机的航空炸弹

武器名称 索敌范围
100lb 炸弹 0 < d ≤ 25 和 -25 < d < 0
500lb 炸弹 0 < d ≤ 22 和 -22 < d < 0
1000lb 炸弹 0 < d ≤ 19 和 -19 < d < 0
1600lb 炸弹 0 < d ≤ 16 和 -16 < d < 0
2000lb 炸弹 0 < d ≤ 13 和 -13 < d < 0
1 x 1600lb 穿甲炸弹 [梭鱼(831中队)使用] 0 < d ≤ 16 和 -16 < d < 0
3 x 800kg 穿甲炸弹 [试作舰载型天雷使用] 0 < d ≤ 16 和 -16 < d < 0


战斗机的火箭弹

  • 4 x 穿甲火箭弹的索敌范围为 10 ≤ d ≤ 45。

反潜机的空投深弹

武器名称 索敌范围
空投深弹-范围up 0 < d ≤ 25 和 -25 < d < 0
空投深弹-标准 0 < d ≤ 22 和 -22 < d < 0


部分技能

  • 这里仅列出一部分,其他技能看需要再加上。
舰船名称 技能武器的名称 索敌范围 备注
皇家方舟 技能鱼雷 0 < d ≤ 35
大凤(μ兵装) 3 x 机载鱼雷-大凤μ 10 ≤ d ≤ 25
光辉(μ兵装) 旋转星星子弹 x9 10 ≤ d ≤ 45
提康德罗加(卡莉永) 提康德罗加火箭弹 x6 10 ≤ d ≤ 45
奥古斯特 奥古斯特AP火箭弹 x 4 15 ≤ d ≤ 50
白龙(鹫) 1 x 天罚落雷 0 < d ≤ 16 和 -16 < d < 0

武器的瞄准

瞄准类型

武器是否瞄准,取决于武器的瞄准类型和武器是否具有目标

  • 如果武器的瞄准类型为瞄准,且具有目标,则会获取目标的位置,并让开火瞬间射出的子弹迅速指向敌人。
  • 如果武器的瞄准类型为无瞄准,或不具有目标,则会让开火瞬间射出的子弹保持原来的运动方向。


是否具有目标这一判断主要用于一部分的舰船技能武器。

  • 对于大部分的非技能武器舰船技能舰载机上的武器,无目标就不会攻击。
  • 但对于部分的其他舰船技能武器非技能武器舰船技能舰载机上的武器,无目标也会进行攻击。
    • 先锋舰船的手操鱼雷和舰载机的平行雷,无目标也会进行攻击

目标被瞄准点的坐标

Unity游戏引擎的坐标系是以y轴正方向为正上方。

对于主线14章,夜战天气会给舰船的被瞄准点加上偏差。

下面假设:

  • 被瞄准实体(舰船或舰载机)碰撞盒的长(Length)、高(Height)、宽(Width)分别为L、H、W,
  • 被瞄准实体的位置坐标为(x,y,z)。
  • 隐蔽强度为A(AimBias), 隐蔽强度对x,z方向的偏差量分别为Ax,Az
    • Ax = A * (-1到1的随机小数1)
    • Az = A * (-1到1的随机小数2)
    • 随机小数1与随机小数2的抽取相互独立。


对于被瞄准的舰船,

  • 一般情况下,被瞄准点的坐标为(x,0,z + 0.5*W)
  • 在主线14章,被瞄准点的坐标为(x + Ax,0,z + 0.5*W + Az)

对于被瞄准的舰载机,

  • 被瞄准点的坐标为(x,y,z)
  • 在主线14章,因为舰载机不使用夜战隐蔽机制,所以其被瞄准点的坐标依然为(x,y,z)

子弹的追踪

声导鱼雷和导弹的子弹都存在追踪机制。

子弹的追踪机制是靠子弹属性和对应的追踪系统来实现。子弹的追踪机制使用了类似扇形检测的思路。对应内容将在下面进行阐述。

一般玩家可以直接看"追踪流程的总结"部分的内容,跳过追踪流程的具体描述。

追踪流程的总结

对于声导鱼雷,一般情况下,敌人满足在追踪范围内子弹运动方向 与 子弹到目标方向 的夹角不小于10°,子弹就执行追踪操作。

对于自动发射导弹,一般情况下,敌人满足在追踪范围内,子弹就执行追踪操作。

声导鱼雷的追踪流程

声导鱼雷的追踪流程:

  1. 首先,如果追踪目标不存在,对应子弹就会尝试寻找满足以下所有筛选条件的敌人作为追踪目标。若已经有目标,则跳过,直接到下一步。
    • 筛选条件1:距离最近的第1名敌人。
    • 筛选条件2:这名敌人与对应子弹的距离小于等于追踪范围。
  2. 然后,按顺序检测以下条件。若满足以下任意一个排除条件,对应子弹放弃该目标,或停止追踪。若都不满足,才进入下一步。
    • 排除条件1:目标倒下
    • 排除条件2:目标与对应子弹的距离大于追踪范围。
    • 排除条件3:子弹运动方向 与 子弹到目标方向 的夹角小于10°。
      • 该条件具体判断方法如下:
      • 矢量1 = Normalize[目标被瞄准点的坐标 - 子弹的坐标]
        • 目标被瞄准点的计算在“武器的瞄准”章节
        • Normalize[...]表示对矢量进行归一化。归一化就是该矢量除以它的模, 得到的新的矢量是模为1的单位矢量
      • 矢量2 = Normalize[子弹在x-z平面的速度]
      • 变量1 = Dot[矢量2,矢量1]
        • Dot[A,B]表示对两个矢量求点乘
        • 设A为(a,b,c),B为(x,y,z),则Dot[A,B] = a * x + b * y + c * z
      • 求出最小追踪角的点乘值TrackerAngle,TrackerAngle = cos[Deg2Rad * 10]
        • Deg2Rad表示角度转弧度的常数,Deg2Rad = π / 180
      • 如果TrackerAngle ≤ 变量1,则子弹放弃该目标
  3. 接着,系统会进行一些计算,让对应子弹转向,向目标移动,实现追踪。
    • 求出相关变量
      • 设第2步中,矢量1为(a,b,c),矢量2为(x,y,z)
      • 变量2 = z * a - x * c
      • 变量3 = cos[Deg2Rad * 追踪时的角速度大小]
      • 变量4 = sin[Deg2Rad * 追踪时的角速度大小]
    • 做判断,求参数
      • 如果 变量1 < 变量2,则 参数1 = 变量3
        • 如果 变量4 ≥ 0,参数2 = 变量4 * 1
        • 如果 变量4 < 0,参数2 = 变量4 * (-1)
      • 如果 变量1 ≥ 变量2,则 参数1 = 变量1,参数2 = 变量2
    • 重新设置子弹速度矢量
      • 设旧的子弹矢量为(A,0,C),速度新的子弹速度矢量为(X,0,Z)
      • X = A * 参数1 + C * 参数2
      • Z = C * 参数1 - A * 参数2
  4. 最后,整个追踪过程会反复执行上述的第1步到第3步。

自动发射导弹(前排导弹)的追踪流程

自动发射导弹(前排导弹)的追踪流程:

  1. 大部分流程与声导鱼雷的追踪流程相似。
  2. 第2步中,没有排除条件3
    • 即对于自动发射导弹,若子弹运动方向 与 子弹到目标方向 的夹角小于10°,也能继续追踪。
  3. 第3步中,计算也有些不同。
    • 求出相关变量和参数
      • 矢量1 = Normalize[目标被瞄准点的坐标 - 子弹的坐标]
        • 目标被瞄准点的计算在“武器的瞄准”章节
        • Normalize[...]表示对矢量进行归一化。归一化就是该矢量除以它的模, 得到的新的矢量是模为1的单位矢量
      • 矢量2 = Normalize[子弹在x-z平面的速度]
      • 变量1 = Dot[矢量2,矢量1]
        • Dot[A,B]表示对两个矢量求点乘
        • 设A为(a,b,c),B为(x,y,z),则Dot[A,B] = a * x + b * y + c * z
      • 设矢量1为(a,b,c),矢量2为(x,y,z)
      • 变量2 = z * a - x * c
      • 参数1 = 变量1,参数2 = 变量2
    • 重新设置子弹速度矢量
      • 设旧的子弹矢量为(A,0,C),速度新的子弹速度矢量为(X,0,Z)
      • X = A * 参数1 + C * 参数2
      • Z = C * 参数1 - A * 参数2

追踪子弹的数据

下面是追踪子弹的数据。

  • 子弹基础速度可在全武器对护甲补正一览查询
  • 注:子弹的追踪范围和武器的范围是不同的参数。在追踪机制中用的是子弹的追踪范围
武器名称[1] 追踪范围 追踪时的角速度大小(度/帧)[2] 追踪时的角速度大小(度/秒)[3]
[三/四/五]联装533mm磁性鱼雷 14 1.6 48.0
533mm磁性鱼雷T3设备提供的第一轮鱼雷[4] 14 1.6 48.0
潜艇用G7e声导鱼雷 14 1.6 48.0
潜艇用Mark 20 S鱼雷-彼得 12 1.2 36.0
潜艇用Mark 18鱼雷 9 1.0 30.0
潜艇用Mark 28鱼雷 12 1.1 33.0
潜艇用92式潜射鱼雷改[5] 9 1.0 30.0
上游1(先锋) 60 1.2 36.0
  • [1]如果武器名称中没有专门加上T1、T2、T3或T0,这说明该种类武器的稀有度不影响追踪参数。
  • [2]这里的角速度大小是以角度制为基准。
  • [3]游戏中的每秒计算帧是30帧
    这里的角速度大小是以角度制为基准。
    这里做了1种转换,为了研究方便,自己做的转换,每帧角速度转换为每秒角速度。计算公式:每秒角速度 = 每帧角速度 * 30。
  • [4]533mm磁性鱼雷T3设备提供的第一轮鱼雷,其实是用新的子弹替换原有的子弹。
  • [5]潜艇用92式潜射鱼雷改实际上是声导鱼雷,游戏内的面板数据有误。