跳转到内容
RA2DIY-WIKI 当前处于维护模式:页面上的内容随时可能发生更改且不会事先告知。

Kratos:说明书/移动器

来自RA2DIY

Kenosis提示:当前Vector为预览版,是VibeCoding的结果,算法需要人类程序猿审查并优化。当前版本仅供初步撰写INI观察效果。

预览版DLL:

https://pan.baidu.com/s/1877pQOrf5JkMSOM6gmJ_VA 提取码: 1145

2026.6.16


Vector (向量)是纯移动效果器,Duration 期间强制修改附着对象坐标

暴力挪移!!

适用于 Projectile、Aircraft、Jumpjet Vehicle、Infantry 等。

BuildingTypes 永久免疫。

所有标签写在 [AttachEffectSection] 下,前缀为 Vector.

Vector 将"位移"抽象为 5 种独立模式,每个 AE 同时只激活一种

按优先级匹配:Freeze > Circle > MoveTo > ReachTarget > Speed

核心设计:

1. 硬控制

  Force=yes 时,Vector 暴力设定坐标挪移,
  引擎自身的 Velocity / 轨迹 / FlakScatter 全部被绕过。
  Vector 默认 Force=yes,所有模式自动硬控。

2. 参考系

  位移计算需要一个原点和一个 FLH 朝向(F 轴)。
  Origin 定义了原点来源和 F 轴的计算方式。
  Z 轴不参与 F/L 轴计算,坐标系严格二维。

3. 叠加

  多个 Vector AE 可同时附加,每个独立计算位移向量,
  最终所有运动合并出总向量进行挪移。

4. 链式切换

  通过 Next= 标签串联多个 AE 实现多阶段运动脚本

通用标签

Vector.TimeStep=N

 运动颗粒度。每 N 帧执行一次位移。
 默认 1(每帧执行)。非运动帧时作用对象冻结。

Vector.Origin=Self / Launcher / Target / Source

 定义位移参考系的原点和 F 轴朝向。
 Self      = 抛射体自身朝向(Velocity 方向),Techno 用 TurretFacing(默认)
 Launcher = 发射者为原点,F 轴 = 发射者 TurretFacing
 Target   = 目标为原点,F 轴 = 目标 → 抛射体连线
 Source   = AE 来源单位为原点,F 轴 = 来源 → 抛射体连线
 默认 Self。

Vector.OriginFLH=F,L,H

原点偏移(FLH 坐标系),根据各种origin自适应。

Vector.OriginIsOnBody=yes/no

Vector.OriginIsOnWorld=yes/no

原点计算时使用单位车身而非炮塔朝向、原点计算时直接使用世界坐标FLH


Vector.OriginNoUpdate=yes/no

 yes = 原点锁定在获得 AE 瞬间的坐标,不跟随 Origin 移动。
 no  = 每帧根据 Origin 类型动态刷新原点和 F 轴。
 默认 no。

Vector.Force=yes/no

 yes = 彻底跳过引擎轨迹计算,Vector 直接 SetLocation 控制位置。默认Yes。
 no  = 引擎轨迹正常计算,但 Vector 仍施加 MoveDisp 偏移。用No的话表现模式非常奇妙,不太可控。

Vector.Freeze=yes/no

 yes = 冻结在获得 AE 时的位置,Duration 继续计时。
       Freeze 为最高优先级,启用时强制挪移,无视其他任何Vector。
 默认 no。

Vector.AllowFallingDestroy=yes/no

 yes = AE 结束后,若单位在空中且超出指定高度,摔死。
 no  = 结束后自由坠落。
 默认 no。

Vector.FallingDestroyHeight=N

 致死高度(lepton)。AllowFallingDestroy=yes 时有效。
 超出此高度则摔死,否则正常坠落。
 未设时使用当前高度对地面差值。
 默认使用高度差。

Vector.DisabledFrames

这么多帧内不进行挪移计算。不用InitialDelay的原因是InitialDelay状态下无法获取Origin。可以记录初始坐标快照,Origin=FLH,此期间其他Vector可以进行挪移,disabled时间结束后再以快照坐标点继续进行其他运动。注意要从总Duration里面减去Disabled帧数,才是运动帧数。

[SNAPSHOT]

Duration=120

Vector.TargetFLH=0,0,0

Vector.Origin=FLH

Vector.Force=yes

AttachOnceInTechnoType=yes

Vector.ReachTarget=yes

Vector.DisabledFrames=50

Vector.OriginNoUpdate=yes

生效时快照当前位置,50帧后挪移回快照位置。期间其他Vector正常运转。


Vector.SyncFacing

 同步Vector移动方向。默认Yes,Yes可以让单位按照Vector的移动向量同步自身朝向。抛射体设No时会始终指向自己的攻击目标。

MoveTo 模式(FLH 强制位移)

每帧在自身 FLH 坐标系下施加固定位移向量。

Vector.MoveTo=F,L,H

 FLH 坐标系位移向量(lepton/step)。
 F=前进方向,L=左方向,H=高度方向。
 默认 0,0,0(不启用 MoveTo 模式)。

Vector.GrowRate=F,L,H

 每运动帧增量(lepton/step),随时间缩放 MoveTo。
 受 TimeStep 约束。
 默认 0,0,0。

Vector.AnglePerStep=N

 每运动帧自增角度(°/step),叠加到当前 FLH 朝向上。
 0 = 跟随物体当前朝向;非 0 = 位移向量持续自旋。
 默认 0。

Speed / ReachTarget 模式

以 Origin + TargetFLH 定义世界坐标目标点,从当前位置追踪。

目标点

Vector.TargetFLH=F,L,H

 目标点(FLH 坐标系,相对 Origin)。
 默认 0,0,0。

Vector.TargetOffsetF=Min,Max

Vector.TargetOffsetL=Min,Max

Vector.TargetOffsetH=Min,Max

 目标随机偏移范围。获得 AE 时随机一次,之后固定。
 默认 0,0。

Vector.ReachTarget=yes/no

 yes = 根据剩余 Duration 自动调节每帧速度,保证恰好在结束前到达。
       Ignore: InitialSpeed / Acceleration / MaxSpeed / MinSpeed。
 no  = 使用 Speed 模式,恒速或加速飞行。
 默认 no。

Vector.ArcHeight=N

 抛物线弧高(lepton)。仅 ReachTarget=yes 时生效。
 正=先升后降(上凸弧),负=先降后升(下凹弧),0=直线。
 弧高叠加在起终点连线上:Z(t) = Z0 + (Z1-Z0)·t + 4·H·t·(1-t)。
 默认 0。

有这玩意就可以把你的Arcing抛射体全刨了

Speed(恒速/加速)

Vector.InitialSpeed=N

 初始线速度(lepton/step)。-1 = 读取单位 Speed 属性。
 默认 -1。

Vector.RandomSpeed=Min,Max

 随机初始速度范围,覆盖 InitialSpeed。Max>Min 时生效。
 默认空(不随机)。

Vector.Acceleration=N

 线加速度(lepton/step²)。每运动帧叠加,受 TimeStep 约束。
 默认 0。

Vector.MaxSpeed=N

 最大速度钳位。-1 = 不限。
 默认 -1。

Vector.MinSpeed=N

 最小速度钳位。-1 = 不限。
 默认 -1。

Circle 模式(圆周运动)

圆心 = Origin。半径/线速/角速三选二,未设的一项自动推算。 半径每帧动态计算,支持增长、收缩和边界结束。

基础参数

Vector.CircleRadius=N

 初始圆半径(lepton)。不写代表自动取抛射体到原点的当前 XY 距离。
 默认 -1。

Vector.CircleSpeed=N

 速率(lepton/step),沿圆周切向。正值逆时针,负值顺时针。建议用角速度,别写这个。
 未设时由半径和角速度自动推算:speed = radius × angleStep(弧度)。
 默认 0。

Vector.CircleAnglePerStep=N

 角速度(°/step),正值逆时针,负值顺时针。
 未设时由半径和线速度自动推算:angleStep = speed / radius(弧度转度)。
 默认 0。

随机初始值

Vector.CircleRandomRadius=Min,Max

 随机初始半径范围,覆盖 CircleRadius。Max>Min 时生效。
 默认空(不随机)。

Vector.CircleRandomAngle=Min,Max

 随机初始角速度范围(°),覆盖 CircleAnglePerStep。Max>Min 时生效。
 默认空(不随机)。

Vector.CircleRandomAngleRanges

填四个数值,如ABCD,初始化角速度取[AB],[CD]区间。


半径动态

Vector.CircleRadiusGrow=N

 半径每步增长率(lepton/step)。正值外扩(外螺旋),负值内缩(内螺旋)。
 默认 0(半径恒定)。

Vector.CircleMaxRadius=N

 半径上限(lepton)。0 = 不限。
 默认 0。

Vector.CircleMinRadius=N

 半径下限(lepton)。0 = 不限。
 默认 0。

Vector.CircleEndOnMaxRadius=yes/no

 yes = 半径达到上限时强制结束 AE。
 默认 no。

Vector.CircleEndOnMinRadius=yes/no

 yes = 半径达到下限时强制结束 AE。
 默认 no。

速度动态

Vector.CircleSpeedAcceleration=N

 速率每步加速度(lepton/step²)。正=加速,负=减速。建议用角速度。
 默认 0。

Vector.CircleMaxSpeed=N

 线速度上限。0 = 不限。
 默认 0。

Vector.CircleMinSpeed=N

 线速度下限。0 = 不限。
 默认 0。

角速度动态

Vector.CircleAngleAcceleration=N

 角速度每步加速度(°/step²)。正=加速,负=减速。
 默认 0。

Vector.CircleMaxAngle=N

 角速度上限。0 = 不限。
 默认 0。

Vector.CircleMinAngle=N

 角速度下限。0 = 不限。
 默认 0。

倾斜圆周运动

Vector.AllowedTilt=yes/no

  yes = 坐标系可绕 XY 面倾斜,Source/Target 的 F 轴纳入 Z 轴差。写了法向量就会自动视为yes。

yes且没有法向量的话就会在计算坐标轴时同时计算Z轴。

Vector.CircleOrigin=F,L,H

  圆心偏移。默认世界坐标加法,AllowOriginTilt=yes 时沿 FLH 轴旋转。建议倾斜时候一定要设置

  默认 0,0,0。

Vector.AllowOriginTilt=yes/no

  yes = CircleOrigin 随法向量倾斜旋转。

  no  = CircleOrigin 纯世界坐标加法(默认)。

Vector.NormalVector=F,L,H

  FLH 坐标系圆面法向量。FLH世界坐标系。F=右上方(North)

  设此后自动启用倾斜坐标系。

Vector.NormalRandomF=Min,Max

Vector.NormalRandomL=Min,Max

Vector.NormalRandomH=Min,Max

  法向量各分量随机初始化范围

Vector.NormalFAnglePerStep=N

Vector.NormalLAnglePerStep=N

Vector.NormalHAnglePerStep=N

  法向量每运动帧固定旋转角速度(°/step)。

Vector.NormalFAngleRanges=A,B,C,D

Vector.NormalLAngleRanges=A,B,C,D

Vector.NormalHAngleRanges=A,B,C,D

  法向量旋转的角速度双区间随机。仅对应 AnglePerStep=0 时生效。

  A,B,C,D 全等=常数角速度。

Vector.Origin.* 圆心运动(Circle 模式专用)

使圆心本身在 FLH 坐标系内运动。上面所有那些玩意再嵌套。非常的粪。

Vector.Origin代表运动的是圆心。简化了很多东西,因为嵌套太复杂了谁都看不明白,不要直接抄,有的语句就是没做嵌套模式

通用

Vector.Origin.Origin=FLH/Launcher/Target/Source

  圆心运动的基座参考系。设定 NormalVector 时被覆盖。

  Target/Source/Launcher 均实时追踪移动对象。

  默认 FLH。

Vector.Origin.OriginFLH=F,L,H

  Origin=FLH 时的手动基准向量(F=北, L=东, H=高)。

  默认空。

Vector.Origin.CircleOffset=F,L,H

  圆心初始世界偏移。设 AllowOriginTilt=yes 时沿 FLH 轴旋转。

  默认 0,0,0。

Vector.Origin.AllowOriginTilt=yes/no

  yes = CircleOffset 沿 Current FLH 轴旋转。

  默认 no。

Vector.Origin.Lissajous=yes/no

  yes = 累积大角旋转,圆心每帧绕整圈翻转方向,

        产生增减边 Lissajous 震荡曲线。

  no  = 增量旋转(默认),圆心逐帧小步连续旋转,

        弹体追踪圆心,形成平滑行星轨迹。

Lissajous曲线,就是减速减面,反转,加速加面,反转

MoveTo 模式

Vector.Origin.MoveTo=F,L,H

  FLH 位移向量(lepton/step)。圆心沿此方向匀速移动。

Vector.Origin.GrowRate=F,L,H

  每步增量(lepton/step)。随帧数线性缩放 MoveTo。

  默认 0,0,0。

Vector.Origin.AnglePerStep=N

  每步自旋角度(°/step)。叠加到 FLH 朝向。

  默认 0。

Speed 模式

Vector.Origin.TargetFLH=F,L,H

  目标点(FLH 坐标系,相对基座)。

Vector.Origin.TargetOffsetF=Min,Max

Vector.Origin.TargetOffsetL=Min,Max

Vector.Origin.TargetOffsetH=Min,Max

  目标随机偏移。OnStart 随机一次。默认 0,0。

Vector.Origin.InitialSpeed=N

  初始速度(lepton/step)。-1=读取单位 Speed。

  默认 -1。

Vector.Origin.Acceleration=N

  加速度(lepton/step²)。每步加至速度。默认 0。

Vector.Origin.MaxSpeed=N

  速度上限。-1=不限。默认 -1。

Vector.Origin.MinSpeed=N

  速度下限。-1=不限。默认 -1。

ReachTarget 模式

Vector.Origin.ReachTarget=yes/no

  yes = 按剩余 Duration 自动调节速度到达目标点,

        到达后自动结束 AE。默认 no。

Vector.Origin.ArcHeight=N

  抛物线弧高(lepton)。仅 ReachTarget=yes 时生效。默认 0。

  正=先升后降(上凸弧),负=先降后升(下凹弧),0=直线。

Circle 模式

圆心绕基座做圆周运动(优先级最低)。

Vector.Origin.CircleRadius=N

  半径(lepton)。默认 -1(自动取当前距离)。

Vector.Origin.CircleSpeed=N

  线速度(lepton/step)。设后角速度=线速度/当前半径。

  默认 0。

Vector.Origin.CircleAnglePerStep=N

  角速度(°/step)。仅 CircleSpeed=0 时生效。

  默认 0。

Vector.Origin.CircleRandomRadius=Min,Max

  初始半径随机范围。默认空。

Vector.Origin.CircleRandomAngle=Min,Max

  初始角速度随机范围。默认空。

Vector.Origin.CircleRadiusGrow=N

  半径每步增长率(lepton/step)。默认 0。

Vector.Origin.CircleMaxRadius=N

  半径上限。默认 0(不限)。

Vector.Origin.CircleMinRadius=N

  半径下限。默认 0(不限)。

Vector.Origin.CircleEndOnMaxRadius=yes/no

  半径达上限时结束 AE。默认 no。

Vector.Origin.CircleEndOnMinRadius=yes/no

  半径达下限时结束 AE。默认 no。

NormalVector(圆心圆面法线)

Vector.Origin.NormalVector=F,L,H

  FLH 法向量。设后启用倾斜圆面。

  默认空。

Vector.Origin.NormalRandomF=Min,Max

Vector.Origin.NormalRandomL=Min,Max

Vector.Origin.NormalRandomH=Min,Max

  法向量各分量随机范围。默认 0,0。

Vector.Origin.NormalFAnglePerStep=N

Vector.Origin.NormalLAnglePerStep=N

Vector.Origin.NormalHAnglePerStep=N

  法线每步角速度(°/step)。H=转向,L=俯仰。默认 0。

Vector.Origin.NormalFAngleRanges=A,B,C,D

Vector.Origin.NormalLAngleRanges=A,B,C,D

Vector.Origin.NormalHAngleRanges=A,B,C,D

  法线角速度双区间随机。默认空。

Vector.Origin.AllowedTilt=yes/no

  yes = 允许 F 轴倾斜。默认 no。Deepusheek把这个写坏了,没用,得等修

参考系

四种 Origin 的实现机制:

FLH(默认)

Vector.OriginFLH=F,L,H  手动指定参考点坐标偏移,不写就是自身000坐标
F 轴 = 抛射体自身 Velocity 方向(Techno 用 TurretFacing)
 L 轴 = F 轴逆时针 90°
 原点 = 抛射体坐标 + OriginFLH 偏移(OnStart 时锁定快照)
       非 NoUpdate 时原点 = 抛射体当前坐标 + OriginFLH 偏移

Launcher

 F 轴 = 发射者 TurretFacing
 L 轴 = F 轴逆时针 90°
 原点 = 发射者坐标(每帧刷新,OriginNoUpdate=yes 则锁定附着AE瞬间位置)

Target

 F 轴 = 目标 → 抛射体连线
 L 轴 = F 轴逆时针 90°
 原点 = 目标坐标
       每帧刷新,OriginNoUpdate=yes 则锁定附着AE瞬间位置。

Source

 F 轴 = AE 来源单位 → 抛射体连线(atan2 实时计算)
 L 轴 = F 轴逆时针 90°
 原点 = AE 来源单位坐标(每帧刷新,OriginNoUpdate=yes 则锁定 OnStart 瞬间位置)。

所有模式下 F/L 轴仅使用 XY 分量计算,Z 不纳入,避免坐标系倾斜。 RotateFLH 旋转公式:Y 轴镜像(与引擎 FLH 一致)。

所有AE都带的的通用标签

Duration=N

 AE 持续时间(帧)。-1 表示永久。

HoldDuration=yes/no

 yes = Duration 到期后保持 AE 不销毁。
 默认 yes(Duration<0 自动 yes)。

Next=AE_SECTION_NAME

 当前 AE 结束后自动附加的下一个 AE。支持逗号分隔多个。

AttachOnceInTechnoType=yes/no

 同类型单位只附加一次。

Vector.Enable=yes/no

 手动启用/禁用。默认自动判断(有位移参数时自动启用)。

叠加

- 多个带 Vector 效果的 AE 同时附加到一个对象时,每个独立计算MoveDisp,最终所有分量相加后一次 SetLocation 应用。 用Next链接一系列Vector即可规划出非常酷炫的飞行轨迹。


测试样例INI:

[TestDelivery]

Deliver.Types=ZEP

[ZEP]

Primary=LOCK

JumpjetHeight=1800

[LOCK]

Damage=1

Range=50

ROF=300

Projectile=InvisibleAll

Warhead=LOCKWH

OmniFire=yes

[LOCKWH]:[TOY]

AttachEffectTypes=Zidong

CellSpread=10

[Zidong]

AutoWeapon.Types=HoverMissile

AutoWeapon.IsAttackerMark=yes

AutoWeapon.ReceiverAttack=no

Duration=50

[120mm]

Range=25

[AP]

AttachEffectTypes=VECTOR,SPIN

CellSpread=10

[SPIN]

BodySpin.Speed=20

BodySpin.SweepPeriod=400

[HoverMissile]

Burst=2

Damage=1

Range=60

ROF=1

Speed=100

ProjectileRange=114514

Projectile=AAHeatSeeker2

[AAHeatSeeker2]

AttachEffectTypes=VECTOR

Image=DRAGON

ROT=100

Shadow=yes

[VECTOR]

Duration=35

Vector.TargetFLH=0,0,2500

Vector.Origin=FLH

Vector.Force=yes

Vector.TimeStep=1

AttachOnceInTechnoType=yes

Vector.ReachTarget=yes

Vector.ArcHeight=0

Next=SPREAD

Vector.OriginNoUpdate=yes

[SPREAD]

Duration=70

Vector.TargetFLH=0,0,0

Vector.Force=yes

AttachOnceInTechnoType=yes

Vector.ReachTarget=yes

Vector.TargetOffsetH=-600,600

Vector.TargetOffsetF=-600,600

Vector.TargetOffsetL=-600,600

Next=GOTO

[GOTO]

Duration=40

Vector.TargetFLH=1000,0,2500

Vector.Origin=Source

Vector.Force=yes

Vector.ArcHeight=1000

AttachOnceInTechnoType=yes

Vector.ReachTarget=yes

Next=CIRCLE,MOVETO

Vector.TargetOffsetH=0,800

Vector.TargetOffsetF=0,800

Vector.TargetOffsetL=-100,100

[CIRCLE]

Duration=4000

Vector.CircleRandomAngle=5,15

Vector.Origin=Source

Vector.Force=yes

Vector.CircleRadiusGrow=-5

Vector.CircleEndOnMinRadius=yes

Vector.CircleMinRadius=50

[MOVETO]

Duration=200

Vector.MoveTo=1,0,-7



样例2:

[CIRCLE]

Duration=150

Vector.CircleRadius=400

;Vector.CircleRandomAngle=5,15

Vector.CircleRandomAngleRanges=-25,-10,10,25

Vector.Origin=Launcher

Vector.Force=yes

Vector.AllowedTilt=yes

Vector.CircleOrigin=0,0,100

Vector.AllowOriginTilt=no

Vector.NormalRandomF=-100,100

Vector.NormalRandomL=-100,100

Vector.NormalRandomH=-100,100

Vector.NormalFAnglePerStep=1

Vector.NormalLAnglePerStep=1

Vector.NormalHAnglePerStep=1

Vector.OriginNoUpdate=yes

Vector.Origin.TargetFLH=0,0,1900

Vector.Origin.Origin=Target

Vector.Origin.ReachTarget=yes

AttachOnceInTechnoType=yes

Vector.Origin.ArcHeight=1024

Next=CIRCLEHOLD

[CIRCLEHOLD]

Duration=200

Vector.CircleRadius=400

;Vector.CircleRandomAngle=5,15

Vector.CircleRandomAngleRanges=-25,-10,10,25

Vector.Origin=Target

Vector.Force=yes

Vector.CircleRadiusGrow=3

Vector.CircleEndOnMaxRadius=yes

Vector.CircleMaxRadius=800

Vector.OriginNoUpdate=yes

Vector.AllowedTilt=yes

Vector.CircleOrigin=0,0,1900

Vector.AllowOriginTilt=no

Vector.NormalRandomF=-100,100

Vector.NormalRandomL=-100,100

Vector.NormalRandomH=-100,100

Vector.NormalFAnglePerStep=1

Vector.NormalLAnglePerStep=1

Vector.NormalHAnglePerStep=1

Next=CIRCLEDOWN

[CIRCLEDOWN]

Duration=200

Vector.CircleRadius=800

;Vector.CircleRandomAngle=5,15

Vector.CircleRandomAngleRanges=-25,-10,10,25

Vector.Origin=Target

Vector.Force=yes

Vector.CircleRadiusGrow=-4

Vector.CircleEndOnMinRadius=yes

Vector.CircleMinRadius=10

Vector.OriginNoUpdate=yes

Vector.AllowedTilt=yes

Vector.CircleOrigin=0,0,1900

Vector.AllowOriginTilt=no

Vector.NormalRandomF=-100,100

Vector.NormalRandomL=-100,100

Vector.NormalRandomH=-100,100

Vector.NormalFAnglePerStep=1

Vector.NormalLAnglePerStep=1

Vector.NormalHAnglePerStep=1