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

Kratos:说明书/移动器:修订间差异

来自RA2DIY
Kenosis留言 | 贡献
无编辑摘要
Kenosis留言 | 贡献
第234行: 第234行:


FLH(默认)
FLH(默认)
  Vector.OriginFLH=F,L,H  手动指定参考点坐标
  Vector.OriginFLH=F,L,H  手动指定参考点坐标偏移,不写就是自身000坐标


  F 轴 = 抛射体自身 Velocity 方向(Techno 用 TurretFacing)
  F 轴 = 抛射体自身 Velocity 方向(Techno 用 TurretFacing)

2026年6月15日 (一) 23:08的版本

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

KratosVector.rar

https://pan.baidu.com/s/1IuIu_kUtAzHw3hge7M8L-Q?pwd=1145

2026.6.15


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=FLH / Launcher / Target / Source

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

Vector.OriginFLH=F,L,H

 Origin=FLH 时的原点偏移(FLH 坐标系),基点 = 抛射体自身坐标。
 默认 0,0,0。

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。

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

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 时有效。
 超出此高度则摔死,否则正常坠落。
 未设时使用当前高度对地面差值。
 默认使用高度差。

参考系

四种 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