Elite Script 相對向量
它們的用途
相對向量是相對於特定但動態位置的向量。
為了更好地解釋這些是什麼,讓我們考慮以下情況:你想要將玩家推向首領作為技能的一部分。由於首領和玩家在戰鬥中都會移動,因此無法依賴特定的向量來實現此效果 - 你需要一個從玩家指向首領的向量。(想像一條帶有箭頭的短線從玩家指向首領。)
相對向量可以以如此多的方式使用,以至於無法列出所有用途,但其中包括:向特定玩家或生物發射實體(如拋射物);在玩家後方生成增援;向特定方向發射掉落方塊;創建射向玩家的光線,以及更多。
向量如何運作?
如果你不知道或不記得什麼是向量或它們如何運作,你可以將向量想像成從一個點指向另一個點的箭頭。
因此,向量的屬性之一是它們的長度。這個長度很重要;在箭的情況下,這個長度是箭射出的速度,在嘗試從特定位置獲取偏移點的情況下,它是距離該點的距離。距離較遠的東西將具有更大的向量長度,而較近的東西將具有較短的長度。
對於某些機制,你可能不想依賴兩點之間的距離,因為你只想獲得一個方向。幸運的是,你可以使用向量標準化,這可以保證方向得以保留,但將長度更改為 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,以確保光線從首領的中心繪製到玩家的中心,而不是從他們的腳部。
注意: 儘管這個範例在區域上使用相對偏移,但請記住相對偏移不僅限於區域,它們也可以應用於其他目標。