メインコンテンツまでスキップ

Elite Script 相対ベクトル

用途

相対ベクトルは、特定の動的な位置に対して相対的なベクトルです。

これを最もよく説明するために、次のケースを考えてみましょう: パワーの一部として、プレイヤーをボスに向かって押したいとします。ボスとプレイヤーは戦闘中に移動するため、特定のベクトルに依存してこの効果を実現することはできません。プレイヤーからボスに向かうベクトルが必要になります。(プレイヤーからボスに向かう矢印付きの短い線を想像してください。)

相対ベクトルは非常に多くの方法で使用できるため、すべてをリストアップすることは不可能ですが、その中には以下のようなものがあります: 特定のプレイヤーやモブに向けてエンティティ(発射物など)を射出する; プレイヤーの背後に援軍をスポーンする; 特定の方向に落下ブロックを射出する; プレイヤーに向けて発射される光線を作成する、などです。

ベクトルの仕組み

ベクトルが何であるか、またはどのように機能するかを知らない、または覚えていない場合は、ベクトルをある点から別の点を指す矢印と考えることができます。

そのため、ベクトルのプロパティの1つは長さです。この長さは重要です。矢の場合、この長さは矢が射出される速度であり、特定の位置からオフセット点を取得しようとする場合は、その点からの距離です。遠くにあるものはより大きなベクトル長を持ち、近いものはより短い長さを持ちます。

一部のメカニクスでは、方向だけを取得したいため、2点間の距離に依存したくない場合があります。幸いなことに、ベクトルの正規化を使用できます。これにより、方向は保持されますが、長さが1.0に変更されることが保証されます。その後、乗数を使用してベクトルを簡単に変更し、提供するオフセットや与える速度に満足するまで調整できます。

プロパティ

詳細必須?デフォルト値
SourceTargetベクトルが始まる点でのターゲットnone
DestinationTargetベクトルの終点でのターゲットnone
normalizeベクトルを正規化するかどうかを設定しますfalse
multiplierベクトルの長さを乗算します。~を使用してこの値をランダム化できます。例: 1.0~2.51.0
offsetこのオフセットに手動の固定オフセットを挿入できます。~を使用してこの値をランダム化できます。例: 0~5,0~2,0~10none
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 1SELF(ボス)です。
  • 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から始まります。
  • オフセットは常に元の値に追加されます。
  • multiplier0に設定され、normalize = trueの場合、オフセットは0になり(1 × 0 = 0のため)、normalize = falseの場合もオフセットは0になります(任意の数に0を掛けると0になるため)。両方のケースで相対オフセットが事実上無効になります。

このシステムにより、EliteMobsスクリプティングでより複雑なスキルロジックを構築する際に、距離を動的に拡張または縮小することが簡単にできます。

プロパティ

詳細必須?デフォルト値
SourceTargetベクトルが始まる点でのターゲットnone
DestinationTargetベクトルの終点でのターゲットnone
normalizeベクトルを正規化するかどうかを設定しますfalse
multiplierベクトルの長さを乗算します。~を使用してこの値をランダム化できます。例: 1.0~2.51.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ブロック超えて光線が延長されます。通常のオフセットもTargetTarget2に適用され、光線が足元からではなく、ボスの中心からプレイヤーの中心へ描画されるようにします。

注意: この例ではゾーンで相対オフセットを使用していますが、相対オフセットはゾーンに限定されず、他のターゲットにも適用できることに注意してください。