Kratos:說明書/移動器
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.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,单位默认No。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。
Vector.AllowFallingDestroy=yes/no
yes = AE 结束后,若单位在空中且超出指定高度,摔死。 no = 结束后自由坠落。 默认 no。
Vector.FallingDestroyHeight=N
致死高度(lepton)。AllowFallingDestroy=yes 时有效。 超出此高度则摔死,否则正常坠落。 未设时使用当前高度对地面差值。 默认使用高度差。
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 = 增量旋轉(默認),圓心逐幀小步連續旋轉,
彈體追蹤圓心,形成平滑行星軌跡。

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