Vecteurs Relatifs Elite Script
À quoi ils servent
Les vecteurs relatifs sont des vecteurs qui sont relatifs à un emplacement spécifique mais dynamique.
Pour mieux expliquer ce que c'est, considérons le cas suivant : vous voulez pousser un joueur vers le boss dans le cadre d'un pouvoir. Étant donné que le boss et le joueur se déplacent pendant le combat, il n'est pas possible de s'appuyer sur un vecteur spécifique pour accomplir cet effet - vous aurez besoin d'un vecteur qui va du joueur vers le boss. (Imaginez une courte ligne avec une flèche allant du joueur vers le boss.)
Les vecteurs relatifs peuvent être utilisés de tant de façons qu'il serait impossible de toutes les énumérer, mais parmi elles : tirer des entités (comme des projectiles) vers un joueur ou un mob spécifique ; faire apparaître des renforts derrière un joueur ; tirer un bloc qui tombe dans une direction spécifique ; créer des rayons qui sont tirés vers un joueur, et bien plus encore.
Comment fonctionnent les vecteurs ?
Si vous ne savez pas ou ne vous souvenez pas de ce que sont les vecteurs ou comment ils fonctionnent, vous pouvez penser aux vecteurs comme des flèches qui pointent d'un point vers un autre point.
Ainsi, l'une des propriétés des vecteurs est leur longueur. Cette longueur est importante ; dans le cas des flèches, cette longueur est la vitesse à laquelle une flèche est tirée, dans le cas de la tentative d'obtenir des points de décalage à partir d'un emplacement spécifique, c'est la distance par rapport à ce point. Les choses plus éloignées auront des longueurs de vecteur plus grandes, et les choses plus proches auront des longueurs plus courtes.
Pour certaines mécaniques, vous ne voudrez probablement pas dépendre de la distance entre deux points, car vous voulez simplement obtenir une direction. Heureusement, vous pouvez utiliser la normalisation de vecteur, qui garantit que la direction est préservée mais change la longueur pour qu'elle soit de 1.0. Vous pouvez ensuite utiliser des multiplicateurs pour modifier facilement le vecteur jusqu'à ce que vous soyez satisfait du décalage qu'il fournit ou de la vélocité qu'il donne.
Propriétés
| Valeur | Détails | Obligatoire ? | Valeur par défaut |
|---|---|---|---|
SourceTarget | Cible au point à partir duquel le vecteur commencera | ✅ | none |
DestinationTarget | Cible au point final pour le vecteur | ✅ | none |
normalize | Définit si le vecteur doit être normalisé | ❌ | false |
multiplier | Multiplie la longueur du vecteur. Vous pouvez randomiser cette valeur en utilisant ~. Exemple : 1.0~2.5. | ❌ | 1.0 |
offset | Permet d'insérer un décalage fixe manuel à ce décalage. Vous pouvez randomiser cette valeur en utilisant ~. Exemple : 0~5,0~2,0~10. | ❌ | none |
Exemple
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
Tire un poulet
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
Tire une flèche
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
Fait apparaître un zombie à 2 blocs derrière le joueur, par rapport au boss.
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
Crée une sphère de flammes animée qui rétrécit vers l'emplacement d'apparition.
Ordre des opérations
L'ordre des opérations lors de l'application des propriétés est le suivant :
Calcul du vecteur -> normalize -> multiplier -> offset
Décalage Relatif Elite Script
À Quoi Servent-Ils ?
Les décalages relatifs fonctionnent de manière similaire aux vecteurs relatifs, mais avec l'objectif d'ajouter de la flexibilité aux décalages. Ils vous permettent d'ajuster les positions dynamiquement lors de la création de scripts, facilitant ainsi l'ajustement fin des positions cibles ou des effets en fonction du contexte.
Comment Fonctionnent les Décalages Relatifs ?
Les décalages relatifs sont additifs, ce qui signifie que quelle que soit la valeur à laquelle le décalage se résout, elle sera ajoutée à la valeur de base (comme un emplacement ou un vecteur).
Décomposons un exemple :
Vous avez une zone de rayon :
Target 1estSELF(le boss).Target 2estNEARBY_PLAYERSavec une portée de 10.
Si un joueur est trouvé à 8 blocs de distance, le rayon aura une longueur de 8 blocs, se terminant au joueur.
Appliquons maintenant un décalage relatif :
Cas 1 : normalize = false, multiplier = 1
- La distance d'origine est 8.
- La valeur de décalage devient
8 × 1 = 8. - Longueur finale du rayon :
8 + 8 = 16.
Le rayon traversera le joueur et continuera pendant 8 blocs supplémentaires.
Cas 2 : normalize = false, multiplier = 2
- La valeur de décalage devient
8 × 2 = 16. - Longueur finale du rayon :
8 + 16 = 24.
Cas 3 : normalize = true, multiplier = 1
- La distance est normalisée à 1.
- La valeur de décalage devient
1 × 1 = 1. - Longueur finale du rayon :
8 + 1 = 9.
Cas 4 : normalize = true, multiplier = 2
- La valeur de décalage devient
1 × 2 = 2. - Longueur finale du rayon :
8 + 2 = 10.
Résumé
normalize = falseutilise la distance réelle entre les cibles.normalize = truecommence toujours à partir d'une base de 1, quelle que soit la distance réelle.- Le décalage est toujours ajouté à la valeur d'origine.
- Lorsque
multiplierest défini sur0avecnormalize = true, le décalage devient0(car1 × 0 = 0), et avecnormalize = false, le décalage devient également0(car tout nombre multiplié par0est0), désactivant effectivement le décalage relatif dans les deux cas.
Ce système vous permet d'étendre ou de réduire facilement les distances dynamiquement lors de la construction d'une logique de compétence plus complexe dans les scripts EliteMobs.
Propriétés
| Valeur | Détails | Obligatoire ? | Valeur par défaut |
|---|---|---|---|
SourceTarget | Cible au point à partir duquel le vecteur commencera | ✅ | none |
DestinationTarget | Cible au point final pour le vecteur | ✅ | none |
normalize | Définit si le vecteur doit être normalisé | ❌ | false |
multiplier | Multiplie la longueur du vecteur. Vous pouvez randomiser cette valeur en utilisant ~. Exemple : 1.0~2.5. | ❌ | 1.0 |
Exemple
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
Ceci créera un rayon statique entre le boss et le joueur, avec un décalage relatif qui étend le rayon de 5 blocs au-delà du joueur. Notez que des décalages réguliers sont également appliqués à Target et Target2 pour garantir que le rayon est tracé du centre du boss au centre du joueur, plutôt que de leurs pieds.
Remarque : Bien que cet exemple utilise un décalage relatif sur une zone, gardez à l'esprit que les décalages relatifs ne sont pas limités aux zones, ils peuvent être appliqués à d'autres cibles également.