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

Kratos:說明書/移動器

出自RA2DIY
Kenosis對話 | 貢獻2026年6月22日 (一) 00:46的修訂
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

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. 硬控制。Vector結束後拋射體回歸原有軌跡。所以建議你只用ROT=100

  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 轴。注意参照点如果是自己且update的话会累加导致超高速飞行
 默认 no。

目標點

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.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.SyncFacing

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

Vector.DisabledFrames

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

生效時快照當前位置,50幀後挪移回快照位置。期間其他Vector正常運轉。

[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


MoveTo 模式(FLH 強制位移)

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

如果Origin設為Target,則F軸是Target指向拋射體的向量。只寫F軸的MoveTo向量就可以定向飛行。

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.ReachTarget=yes/no

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

Vector.ReachTargetEarlyEnd=N

提前结束,在距离到达还有N帧时移除Vector效果器

Vector.ArcHeight=N

Vector.RandomArcHeight=Min,Max

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

Vector.ArcRotation=N,

Vector.ArcRandomRotation=Min,Max

抛物线旋转度数,随机旋转度数,-360-360,正数为顺时针转动

Vector.ArcPeakPercent=N (如30)

抛物线顶点在整个线的百分比,默认就是50,没有百分号,意味着50%,飞行到一半时到达弧线顶峰


Vector.ArcPeakRandomPercent=20,70

上面这玩意的随机化版本,填Min,Max

有這玩意就可以把你的Arcing拋射體全刨了,大一統拋射體,只用ROT類就夠

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 軸旋轉。建議傾斜時候一定要設置

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代表運動的是圓心。簡化了很多東西,因為嵌套太複雜了誰都看不明白,不要直接在上面的語句內插入.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 的實現機制:

Self(默認)

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 不納入,避免坐標系傾斜。除非Vector.AllowedTilt=yes

所有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