Elite Script 相対ベクトル
用途
相対ベクトルは、特定の動的な位置に対して相対的なベクトルです。
これを最もよく説明するために、次のケースを考えてみましょう: パワーの一部として、プレイヤーをボスに向かって押したいとします。ボスとプレイヤーは戦闘中に移動するため、特定のベクトルに依存してこの効果を実現することはできません。プレイヤーからボスに向かうベクトルが必要になります。(プレイヤーからボスに向かう矢印付きの短い線を想像してください。)
相対ベクトルは非常に多くの方法で使用できるため、すべてをリストアップすることは不可能ですが、その中には以下のようなものがあります: 特定のプレイヤーやモブに向けてエンティティ(発射物など)を射出する; プレイヤーの背後に援軍をスポーンする; 特定の方向に落下ブロックを射出する; プレイヤーに向けて発射される光線を作成する、などです。
ベクトルの仕組み
ベクトルが何であるか、またはどのように機能するかを知らない、または覚えていない場合は、ベクトルをある点から別の点を指す矢印と考えることができます。
そのため、ベクトルのプロパティの1つは長さです。この長さは重要です。矢の場合、この長さは矢が射出される速度であり、特定の位置からオフセット点を取得しようとする場合は、その点からの距離です。遠くにあるものはより大きなベクトル長を持ち、近いものはより短い長さを持ちます。
一部のメカニクスでは、方向だけを取得したいため、2点間の距離に依存したくない場合があります。幸いなことに、ベクトルの正規化を使用できます。これにより、方向は保持されますが、長さが1.0に変更されることが保証されます。その後、乗数を使用してベクトルを簡単に変更し、提供するオフセットや与える速度に満足するまで調整できます。
プロパティ
| 値 | 詳細 | 必須? | デフォルト値 |
|---|---|---|---|
SourceTarget | ベクトルが始まる点でのターゲット | ✅ | none |
DestinationTarget | ベクトルの終点でのターゲット | ✅ | none |
normalize | ベクトルを正規化するかどうかを設定します | ❌ | false |
multiplier | ベクトルの長さを乗算します。~を使用してこの値をランダム化できます。例: 1.0~2.5。 | ❌ | 1.0 |
offset | このオフセットに手動の固定オフセットを挿入できます。~を使用してこの値をランダム化できます。例: 0~5,0~2,0~10。 | ❌ | none |
例
eliteScript:
ShootChicken:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SUMMON_ENTITY
sValue: CHICKEN
Target:
targetType: SELF
RelativeVector:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 2.0
ニワトリを射出します
eliteScript:
ShootArrow:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SUMMON_ENTITY
sValue: ARROW
Target:
targetType: SELF
RelativeVector:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 2.0
矢を射出します
eliteScript:
SpawnReinforcement:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SUMMON_ENTITY
sValue: ZOMBIE
Target:
targetType: SELF
RelativeOffset:
SourceTarget:
targetType: SELF
DestinationTarget:
targetType: DIRECT_TARGET
normalize: true
multiplier: 2.0
ボスに対して相対的に、プレイヤーの2ブロック後ろにゾンビをスポーンします。
eliteScript:
Example:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
Shape: SPHERE
target:
targetType: SELF_SPAWN
offset: 0,0,0
track: false
filter: PLAYER
radius: 6
Actions:
- action: SPAWN_PARTICLE
repeatEvery: 38
times: 5
Target:
targetType: ZONE_FULL
track: false
coverage: 0.9
particles:
- particle: FLAME
RelativeVector:
SourceTarget:
targetType: ACTION_TARGET
track: true
DestinationTarget:
targetType: SELF_SPAWN
offset: 0,-0.5,0
speed: 0.05
スポーン位置に縮小するアニメーション化された炎の球体を作成します。
演算の順序
プロパティを適用する際の演算の順序は次のとおりです:
ベクトル計算 -> normalize -> multiplier -> offset
Elite Script 相対オフセット
用途
相対オフセットは相対ベクトルと同様に機能しますが、オフセットに柔軟性を追加することを目的としています。スクリプト作成時に位置を動的に調整できるため、コンテキストに基づいてターゲット位置やエフェクトを微調整しやすくなります。
相対オフセットの仕組み
相対オフセットは加算的です。つまり、オフセットが解決される値は、基本値(位置やベクトルなど)に追加されます。
例を詳しく見てみましょう:
ray zoneがあるとします:
Target 1はSELF(ボス)です。Target 2は範囲10のNEARBY_PLAYERSです。
プレイヤーが8ブロック離れた場所で見つかった場合、光線は8ブロックの長さになり、プレイヤーで終わります。
それでは、相対オフセットを適用してみましょう:
ケース1: normalize = false, multiplier = 1
- 元の距離は8です。
- オフセット値は
8 × 1 = 8になります。 - 最終的な光線の長さ:
8 + 8 = 16。
光線はプレイヤーを通過し、さらに8ブロック続きます。
ケース2: normalize = false, multiplier = 2
- オフセット値は
8 × 2 = 16になります。 - 最終的な光線の長さ:
8 + 16 = 24。
ケース3: normalize = true, multiplier = 1
- 距離は1に正規化されます。
- オフセット値は
1 × 1 = 1になります。 - 最終的な光線の長さ:
8 + 1 = 9。
ケース4: normalize = true, multiplier = 2
- オフセット値は
1 × 2 = 2になります。 - 最終的な光線の長さ:
8 + 2 = 10。
まとめ
normalize = falseはターゲット間の実際の距離を使用します。normalize = trueは実際の距離に関係なく、常に1から始まります。- オフセットは常に元の値に追加されます。
multiplierが0に設定され、normalize = trueの場合、オフセットは0になり(1 × 0 = 0のため)、normalize = falseの場合もオフセットは0になります(任意の数に0を掛けると0になるため)。両方のケースで相対オフセットが事実上無効になります。
このシステムにより、EliteMobsスクリプティングでより複雑なスキルロジックを構築する際に、距離を動的に拡張または縮小することが簡単にできます。
プロパティ
| 値 | 詳細 | 必須? | デフォルト値 |
|---|---|---|---|
SourceTarget | ベクトルが始まる点でのターゲット | ✅ | none |
DestinationTarget | ベクトルの終点でのターゲット | ✅ | none |
normalize | ベクトルを正規化するかどうかを設定します | ❌ | false |
multiplier | ベクトルの長さを乗算します。~を使用してこの値をランダム化できます。例: 1.0~2.5。 | ❌ | 1.0 |
例
eliteScript:
MakeStaticRay:
Events:
- EliteMobDamagedByPlayerEvent
Zone:
shape: STATIC_RAY
Target:
targetType: SELF
offset: 0,1,0
Target2:
targetType: NEARBY_PLAYERS
range: 10
offset: 0,1,0
relativeOffset:
sourceTarget:
targetType: SELF
destinationTarget:
targetType: NEARBY_PLAYERS
range: 10
multiplier: 5
normalize: true
Actions:
- action: SPAWN_PARTICLE
Target:
targetType: ZONE_FULL
particles:
- particle: ELECTRIC_SPARK
amount: 1
repeatEvery: 1
times: 400
これにより、ボスとプレイヤーの間に静的な光線が作成され、相対オフセットによってプレイヤーを5ブロック超えて光線が延長されます。通常のオフセットもTargetとTarget2に適用され、光線が足元からではなく、ボスの中心からプレイヤーの中心へ描画されるようにします。
注意: この例ではゾーンで相対オフセットを使用していますが、相対オフセットはゾーンに限定されず、他のターゲットにも適用できることに注意してください。