Kratos:说明书/移动器
Kenosis提示:当前Vector为预览版,在正式版DLL里面没有!
这个功能是VibeCoding的结果,算法需要人类程序猿审查并优化。当前版本仅供初步撰写INI观察效果。
预览版DLL:
https://pan.baidu.com/s/1877pQOrf5JkMSOM6gmJ_VA 提取码: 1145
2026.8.6
综述
Vector系统实质上就是对附着的抛射体或单位进行暴力挪移。用于单位时因为wwsb的神奇格子系统,单位在Vector生效时死亡时大概率引发崩溃,建议尽量少用到单位上。或者单位持有vector时应该无敌,并在vector结束后至少2帧才可以死亡。用于飞行器和jumpjet车时似乎还算稳定。不可用于建筑。
Vector是可混合的AE,多个Vector各自计算移动向量后复合出唯一的移动量。
Vector产生的运动有5种模式:
Freeze:最高权限,冻结在空中,此时一切Vector的移动量都会被强制归零。不常用。
MoveTo:以lepton计算的位移量。每帧运动这么多。不常用。
Speed:直线运动。默认行为是飞到目标坐标后AE自动结束。
ReachTarget:无视速度,只读取Duration,Duration结束后必然飞到目标。
Circle:画圈。除了圆的运动外,还支持圆心复合其他运动类型,如圆心也画圆,圆心飞向目标等。
因为只挪移,不修改其他东西,抛射体永远记得自己的目标。所以在Vector结束后抛射体还能飞回去打自己的原定目标。你可以所有抛射体都只用ROT=100了。可以用ReachTarget或Speed模式的弧线控制来模拟Arcing,且可以正常对空。当然,挪移Arcing和Vertical也是可以的,但是确实没有必要。
和SpawnMissile的连用
因为Westwood的傻逼代码SpawnManager,子机必须在所有导弹都发射完毕后(发射器清空)才会获得目标,所以你不能令母体装载的导弹数过多。如果在全体发射完毕之前导弹就获得了Origin=Target的Vector,导弹会试图进行子机一般的集结。虽然在Vector代码里面专门处理了这种情况(从发射者身上获取目标并写入缓存),但仍然不见得完美。请尽量避免用Origin=Target的Vector操作发射完毕之前的导弹。(谁家好人会给导弹发射器写12个导弹啊)
导弹终末端如果使用ReachTarget的话有概率在飞行抵达目标之前Vector就结束了。如果确有必要,建议用Speed模式。如果不得不用ReachTarget,建议在Vector最后加一个自动武器发射导弹伤害,并接一个DestroySelf直接销毁导弹。一般来说在导弹上做Vector是做不精准子机导弹,所以这么处理也不至于穿帮。
标签设计:
| 标签名 (Vector.xxx) | 类型 | 默认值 | 详细说明 |
| 通用设定 | |||
|---|---|---|---|
| Vector.TimeStep | int | 1 | 每隔 TimeStep 帧才执行一次运动计算。非运动帧 MoveDisp 为空(子弹/单位位置不变),但 _elapsedFrames 仍然递增(计时不停)。默认 1 表示每帧都动。 |
| Vector.DisabledFrames | int | 0 | AE 启动后冻结前 N 帧。冻结期间 MoveDisp 恒为 {0,0,0},不计入运动帧数。抛射体/单位在此期间仍可被其他机制挪移,只是这一个 Vector 不产生位移。作用是快照Vector生效时的原点坐标。 |
| Vector.SyncFacing | bool | no | yes:抛射体的头部朝向运动方向(写 Velocity),单位转向运动方向(改 PrimaryFacing)。no:不碰朝向,抛射体维持引擎默认指向目标,单位维持原朝向。建议别用yes,会让抛射体提前被引擎引爆 |
| Vector.OriginIsOnWorld | bool | no | yes:所有 FLH 偏移锁定世界坐标系(F→世界+Y即北,L→世界+X即东),完全无视单位/弹体/参考系的朝向。搭配 CircleOrigin 等可做"绝对高度"偏移。 |
| Vector.OriginIsOnBody | bool | no | 仅在 Origin=Self 或 Launcher 时生效。yes:F 轴取车身 PrimaryFacing(无视炮塔旋转)。no:取炮塔 TurretFacing。对 TargetFLH 的 FLH→世界坐标投射也有影响。 |
| Vector.Origin | enum | Self | Self, Target, Launcher, Source。 定义原点参考系。Self:以弹体/单位自身为原点,F 轴=弹体朝向或单位 TurretFacing。Target:以攻击目标为原点(单位跟踪,地面锁定),F 轴=目标→弹体方向。Launcher:以发射者为原点,F 轴=发射者自身的炮塔指向。Source:以 AE Source 对象为原点,F 轴=Source→弹体方向。 |
| Vector.OriginFLH | CoordStruct | 0,0,0 | 对 Origin 原点施加 FLH 偏移。 |
| Vector.OriginNoUpdate | bool | no | yes:原点在本AE创建时快照,后续不再跟踪目标/发射者的移动。no:每帧重新计算参考系(Target 跟踪目标移动,Launcher 跟踪发射者移动)。 |
| Vector.Force | bool | yes | 默认所有模式 Force=yes。抛射体:yes=SetLocation 暴力挪移,不叠加引擎自身运动;no=引擎轨迹+Vector 位移叠加。单位:yes=跳过路径碰撞校验直接 SetLocation(可高空穿墙),首次进入时切换 Locomotor 为 Jumpjet;no=走 CanMoveTo 路径校验,撞墙反弹。 |
| Vector.AllowFallingDestroy | bool | no | Vector 结束时是否允许摔死。yes:当高度 > FallingDestroyHeight 时判定死亡。 |
| Vector.FallingDestroyHeight | int | LevelHeight | 摔死判定的高度阈值。低于此高度不判死。默认值为引擎的 LevelHeight 常量(约为 1 个单位层高)。 |
| Freeze模式 | |||
|---|---|---|---|
| Vector.Freeze | bool | no | 最高优先级模式。yes:首帧快照当前位置为 FrozenPos,之后每帧计算位移=FrozenPos-当前位置,始终拉回冻结位置。抛射体下会自动开启 Force=true。Freeze 存在时所有其他运动模式(Circle/MoveTo/Speed/ReachTarget)均不会执行。 |
| MoveTo 模式 | |||
|---|---|---|---|
| Vector.MoveTo | CoordStruct | 0,0,0 | 纯 FLH 位移模式。每帧将 MoveTo 作为 FLH 偏移(F=沿 F 轴方向,L=垂直 F 轴,H=高度),转换成世界坐标位移叠加到弹体/单位上。Force 自动为 true。 |
| Vector.GrowRate | CoordStruct | 0,0,0 | 每运动帧 FLH 线性增量:MoveTo 的实际值 = MoveTo + GrowRate×运动帧数。可实现持续加速的位移(呼吸/螺旋/振幅效果)。 |
| Vector.AnglePerStep | double | 0 | MoveTo 的自旋角度增量(度/步)。非零时在 MainFacing 上每帧叠加该角度,实现 FLH 位移方向的自旋。比较原始。 |
| Speed模式 | |||
|---|---|---|---|
| Vector.LinearSpeed | int | -1 | Speed 模式的初始线速度(lepton/步)。-1=读取单位 Speed(Jumpjet 读取 JumpjetSpeed,否则读 Speed;抛射体读 pBullet->Speed)。≥0 直接使用。RandomSpeed 非退化时覆盖。 |
| Vector.RandomSpeed | int,int | 0,0 | 初始速度随机范围 (Min,Max),非退化时覆盖 LinearSpeed。 |
| Vector.MaxSpeed | int | -1 | 速度上限。-1=不限。 |
| Vector.MinSpeed | int | -1 | 速度下限。-1=不限。 |
| Vector.Acceleration | int | 0 | Speed 模式下:每帧线速度增量(speed += Acceleration×绝对帧数)。Circle 模式下注:若 CircleSpeedAcceleration=0 时自动复用 Acceleration 作为圆加速率。 |
| Vector.SpeedEndOnReach | bool | yes | yes=抵达目标坐标点即强制结束AE并钳位到目标点(修复飞越后抽搐);no=越过目标继续飞回来,抽搐。一般就是yes,没有改的必要。 |
| ReachTarget 模式 | |||
| Vector.ReachTarget | bool | no | 剩余帧数强制到达模式。每帧位移 = 剩余距离÷剩余帧数,保证在 Duration 结束时恰好到达目标。超时后 Force=yes 时直接 SetLocation 到目标,Force=no 时无位移自然结束。 |
| Vector.ReachTargetEarlyEnd | int | 0 | 提前结束帧数。>0 时当剩余运动帧 ≤ 该值时 Deactivate 提前交还控制权给引擎。 |
| ReachTarget和Speed的弧控制和目标偏移 | |||
| Vector.TargetFLH | CoordStruct | 0,0,0 | 目标参考点在 Origin 参考系中的 FLH 坐标。Origin=Self 时以弹体/单位为参考,Origin=Target 时以目标为参考。叠加 TargetOffset 随机偏移后计算世界坐标。 |
| Vector.TargetOffsetF | int,int | 0,0 | 目标 F 轴随机偏移 (Min,Max),首帧随机抽取,作用在 TargetFLH 上。 |
| Vector.TargetOffsetL | int,int | 0,0 | 目标 L 轴随机偏移。 |
| Vector.TargetOffsetH | int,int | 0,0 | 目标 H 轴随机偏移。 |
| Vector.TargetOffsetFRanges | double×4 | 0,0,0,0 | 四参数版随机Offset |
| Vector.TargetOffsetLRanges | double×4 | 0,0,0,0 | 四参数版随机Offset |
| Vector.TargetOffsetHRanges | double×4 | 0,0,0,0 | 四参数版随机Offset |
| Vector.TargetOffsetRadius | int,int | 0,0 | 以距离计算的随机偏移范围 |
| Vector.TargetOffsetRadiusRanges | double×4 | 0,0,0,0 | 四参数版偏移范围 |
| Vector.TargetOffsetSphere | bool | no | 偏移量是否以球面计算,no则用圆面,高度用平面坐标的TargetOffsetH / TargetOffsetHRanges语句控制 |
| Vector.TargetOffsetAngles | double×4 | 0,0,0,0 | 许可的偏移角度,四参数,仅圆环模式(Sphere=no)生效。抛射体指向目标的轴,与圆的近交点为0,远交点为180 |
| Vector.ArcHeight | int | 0 | ReachTarget/Speed 抛物线弧高(lepton),0=直线轨迹。正=上凸弧,负=下凹弧。弧高使用分段抛物线公式(升弧段:ax(2-x),降弧段:1-x²)。Speed 模式下按剩余距离比例计算进度,弧高增量独立叠加不影响直线速度。 |
| Vector.ArcPeakPercent | double | 50 | 弧峰所在 Duration 百分比(0-100)。默认 50 即弧峰在终点的中点。 |
| Vector.RandomArcPeakPercent | double,double | 0,0 | 弧峰百分比随机范围 (Min,Max),覆盖 ArcPeakPercent。 |
| Vector.RandomArcHeight | int,int | 0,0 | 弧高随机范围 (Min,Max),覆盖 ArcHeight。 |
| Vector.ArcRotation | double | 0 | 弧面旋转角度(度),0=默认弧面朝正上方。非零时弧线在空间中以 Rodrigues 旋转公式构造弧面法线方向偏移,不再单纯 Z 轴。 |
| Vector.RandomArcRotation | double,double | 0,0 | 弧面旋转随机范围 (Min,Max),覆盖 ArcRotation。 |

| Circle 模式 | |||
|---|---|---|---|
| Vector.CircleRadius | int | -1 | 圆半径(lepton)。-1=自动取弹体/单位当前到圆心的 XY 距离。>0 直接使用。每运动帧叠加 CircleRadiusGrow,受 CircleMaxRadius/CircleMinRadius 钳位。 |
| Vector.CircleSpeed | int | 0 | 圆周线速度(lepton/步)。>0 即可独立激活 Circle 模式。每帧叠加加速度,受 CircleMaxSpeed/CircleMinSpeed 钳位。0 时首帧兜底取弹体/单位自身 Speed。与 CircleAnglePerStep 共存时角速度优先——线速度由角速度×半径重算,显式 CircleSpeed 被忽略。 |
| Vector.CircleSpeedAcceleration | int | 0 | 线速度每步加速度。0 时若通用 Acceleration≠0 则复用 Acceleration。 |
| Vector.CircleMaxSpeed | int | 0 | 线速度上限。0=不限。 |
| Vector.CircleMinSpeed | int | 0 | 线速度下限。0=不限。 |
| Vector.CircleAnglePerStep | double | 0 | 圆周角速度(度/步)。>0 即可独立激活 Circle 模式。每帧叠加 CircleAngleAcceleration,受 CircleMaxAngle/CircleMinAngle 钳位。优先级高于 CircleSpeed——两者都设时,线速度由角速度×半径重算。 |
| Vector.CircleAngleAcceleration | double | 0 | 角速度每步加速度。 |
| Vector.CircleMaxAngle | double | 0 | 角速度上限。0=不限。 |
| Vector.CircleMinAngle | double | 0 | 角速度下限。0=不限。 |
| Vector.CircleOrigin | CoordStruct | 0,0,0 | 圆心偏移。AllowOriginTilt=no 时直接世界坐标加法(圆心=Origin点+CircleOrigin),无视朝向。AllowOriginTilt=yes 时作为 FLH 偏移跟随转轴旋转(F=沿 facing,L=垂直 facing,H=Z)。 |
| Vector.AllowOriginTilt | bool | no | 是否允许圆心随物体倾斜而移动 |
| Vector.CircleRandomRadius | int,int | 0,0 | 初始半径随机范围 (Min,Max)。非退化时首帧从范围随机抽取,覆盖显式 CircleRadius。 |
| Vector.CircleRandomAngle | double,double | 0,0 | 初始角速度随机范围 (Min,Max)。非退化时首帧从范围随机抽取,覆盖显式 CircleAnglePerStep。注意不是 4 值:只是单区间随机。 |
| Vector.CircleRandomAngleRanges | double×4 | 0,0,0,0 | 初始角速度 4 值双区间 (min1,max1,min2,max2),50% 概率从区间 1 或区间 2 抽取。覆盖显式 CircleAnglePerStep 和 CircleRandomAngle。 |
| Vector.CircleRadiusGrow | int | 0 | 每运动帧半径增量(lepton/步)。正=外扩,负=内缩。 |
| Vector.CircleMaxRadius | int | 0 | 半径上限。0=不限。达到上限时由 CircleEndOnMaxRadius 控制是否结束。 |
| Vector.CircleMinRadius | int | 0 | 半径下限。0=不限。达到下限时由 CircleEndOnMinRadius 控制是否结束。 |
| Vector.CircleEndOnMaxRadius | bool | no | yes:半径≥CircleMaxRadius 时 Deactivate 结束 AE。 |
| Vector.CircleEndOnMinRadius | bool | no | yes:半径≤CircleMinRadius 时 Deactivate 结束 AE。 |
| Vector.AllowCircleTilt | bool | no | 是否允许圆面随着附着物体的倾斜而倾斜 |
| Vector.Lissajous | int | 0 | Lissajous曲线变化速度 |
| NormalVector 圆面法线(倾斜圆面) | |||
| Vector.NormalVector | CoordStruct | 0,0,0 | 圆面法向量,FLH 坐标系。决定圆如何倾斜。世界坐标。 |
| Vector.NormalRandomF | CoordStruct | 0,0 | 法向量 F 分量的随机范围 (Min,Max),首帧抽取后叠加到 NormalVector。 |
| Vector.NormalRandomL | CoordStruct | 0,0 | 法向量 L 分量随机范围。 |
| Vector.NormalRandomH | CoordStruct | 0,0 | 法向量 H 分量随机范围。 |
| Vector.NormalFAnglePerStep | double | 0 | 绕 F 轴的角速度(度/步),常数模式。圆面的法线每运动帧绕 F 轴旋转该角度。 |
| Vector.NormalLAnglePerStep | double | 0 | 绕 L 轴的角速度(度/步)。 |
| Vector.NormalHAnglePerStep | double | 0 | 绕 H 轴的角速度(度/步)。 |
| Vector.NormalFAngleRanges | double×4 | 0,0,0,0 | 绕 F 轴角速度的 4 值双区间 (min1,max1,min2,max2),50% 概率从区间 1 或区间 2 随机抽取。常数模式(NormalFAnglePerStep)优先于随机区间。 |
| Vector.NormalLAngleRanges | double×4 | 0,0,0,0 | 绕 L 轴角速度双区间。 |
| Vector.NormalHAngleRanges | double×4 | 0,0,0,0 | 绕 H 轴角速度双区间。 |

| 圆心整体运动 | |||
|---|---|---|---|
| 圆心 MoveTo (Origin.*) | |||
| Vector.Origin.MoveTo | CoordStruct | 0,0,0 | 圆心在基座上的 FLH 位移(lepton/步)。非空时圆心每运动帧按此偏移移动,朝向使用 _originFacing+自旋角度合成的方向,调用 GetFLHAbsoluteOffset 转换。 |
| Vector.Origin.GrowRate | CoordStruct | 0,0,0 | 圆心 MoveTo 的每步增量。实际值 = OriginMoveTo + OriginGrowRate×运动帧数。 |
| Vector.Origin.AnglePerStep | double | 0 | 圆心 MoveTo 的自旋角度增量(度/步),叠加在 _originFacing 上。 |
| 圆心 Speed/ReachTarget 模式飞向目标(Origin.*) | |||
| Vector.Origin.TargetFLH | CoordStruct | 0,0,0 | 圆心追踪目标在基座坐标系中的 FLH 位置。非空时进入圆心的 Speed/ReachTarget 子模式。OriginReachTarget 控制用何种方式到达。 |
| Vector.Origin.LinearSpeed | int | -1 | -1=读取单位 Speed。≥0 直接使用该速度。圆心 Speed 子模式的初始线速度。 |
| Vector.Origin.Acceleration | int | 0 | 圆心 Speed 子模式的每步加速度。 |
| Vector.Origin.MaxSpeed | int | -1 | 圆心 Speed 子模式速度上限。-1=不限。 |
| Vector.Origin.MinSpeed | int | -1 | 圆心 Speed 子模式速度下限。-1=不限。 |
| Vector.Origin.ReachTarget | bool | no | yes:到达模式,圆心按剩余帧数均分位移,强制到目标 FLH。no:纯速度追踪模式,每帧向目标移动 OriginLinearSpeed 距离。 |
| Vector.Origin.SpeedEndOnReach | bool | yes | yes=圆心抵达目标即结束AE;no=越过目标继续飞 |
| Vector.Origin.ArcHeight | int | 0 | 圆心 ReachTarget/Speed 抛物线弧高。0=直线移动。Speed 模式下弧高按剩余距离比例叠加增量,与直线速度解耦。 |
| Vector.Origin.TargetOffsetF | int,int | 0,0 | 圆心目标 F 轴随机偏移范围 |
| Vector.Origin.TargetOffsetL | int,int | 0,0 | 圆心目标 L 轴随机偏移范围 |
| Vector.Origin.TargetOffsetH | int,int | 0,0 | 圆心目标 H 轴随机偏移范围 |
| 圆心自身画一个大圆 (Origin.*) | |||
|---|---|---|---|
| Vector.Origin.CircleRadius | int | -1 | 圆心圆周运动的半径。-1=自动取当前距离。>0 直接使用。 |
| Vector.Origin.CircleSpeed | int | 0 | 圆心圆周线速度。与主 Circle 不同,此处无角速度覆盖规则——速度>0 且半径>0 时用 radar_offset 推角速度。 |
| Vector.Origin.CircleAnglePerStep | double | 0 | 圆心圆周角速度。仅在 OriginCircleSpeed=0 或半径≤0 时生效。 |
| Vector.Origin.CircleRandomRadius | int,int | 0,0 | 圆心圆周初始半径随机 |
| Vector.Origin.CircleRandomAngle | double,double | 0,0 | 圆心圆周初始角速度随机 |
| Vector.Origin.CircleRadiusGrow | int | 0 | 圆心圆周半径增量(lepton/步)。 |
| Vector.Origin.CircleMaxRadius | int | 0 | 圆心圆周半径上限。0=不限。 |
| Vector.Origin.CircleMinRadius | int | 0 | 圆心圆周半径下限。0=不限。 |
| Vector.Origin.CircleEndOnMaxRadius | bool | no | 圆心圆周半径达上限时结束。 |
| Vector.Origin.CircleEndOnMinRadius | bool | no | 圆心圆周半径达下限时结束。 |
| Vector.Origin.AllowCircleTilt | bool | no | yes:允许圆面倾斜 |
| Vector.Origin.AllowOriginTilt | bool | no | yes:圆心的 CircleOrigin 偏移改为 FLH 模式,随附着物体倾斜而倾斜。 |
| Vector.Origin.CircleOffset | CoordStruct | 0,0,0 | 圆心原点偏移,在基座坐标系上直接加世界坐标偏移量。 |
| Vector.Origin.Lissajous | int | no | 角度持续累加产生独立相位,角加速度 |
| Vector.Origin.Origin | enum | Self | 圆心运动的参考系选择。Self=以主系 originPos 为基座。Launcher/Target/Source=以对应实体坐标为基座。OriginOriginFLH 可在此基础上再叠加 FLH 偏移。 |
| Vector.Origin.OriginFLH | CoordStruct | 0,0,0 | 对圆心运动基座施加 FLH 偏移。 |
| 大圆法线 (Origin.*) | |||
| Vector.Origin.NormalVector | CoordStruct | 0,0,0 | 圆心运动系统的独立法向量(FLH坐标系),定义圆心的独立朝向。 |
| Vector.Origin.NormalRandomF | CoordStruct | 0,0 | 圆心法线 F 随机范围。 |
| Vector.Origin.NormalRandomL | CoordStruct | 0,0 | 圆心法线 L 随机范围。 |
| Vector.Origin.NormalRandomH | CoordStruct | 0,0 | 圆心法线 H 随机范围。 |
| Vector.Origin.NormalFAnglePerStep | double | 0 | 圆心法线绕 F 轴旋转角速度。 |
| Vector.Origin.NormalLAnglePerStep | double | 0 | 圆心法线绕 L 轴旋转角速度。 |
| Vector.Origin.NormalHAnglePerStep | double | 0 | 圆心法线绕 H 轴旋转角速度。 |
