4 votes

Invocation d'une flèche visant un mob

Je veux invoquer une flèche qui est tirée dans la même direction que le joueur dont elle est invoquée le plus proche, est-ce possible avec seulement des commandes et un minimum de blocs de commandes ? (pas un bloc de commande pour chaque 30° par exemple)

Pour l'instant, j'ai essayé de l'invoquer sans gravité et, juste après son apparition, de le téléporter à l'aide de /execute as @e[type=arrow,name="guardarrow",scores={lifetime=1..1}] at @s rotated as @p run tp @s ~ ~ ~ ~ ~ (le tableau d'affichage de la durée de vie n'est que de +1 par tic) qui fait tourner la flèche pendant environ 0,5 seconde, puis la fait revenir en arrière, ce qui rend cette méthode inutile. L'utilisation de la fonction Motion:[x.x,x.x,x.x] Le nbt ne fonctionne pas car il doit pouvoir aller dans toutes les directions. Existe-t-il un moyen de faire fonctionner cela correctement ?

Aussi : Lorsque l'on téléporte les flèches pour les déplacer, elles ne touchent apparemment pas les objets, elles passent directement à travers les mobs.

1voto

Fabian Röling Points 19325

Vous avez dit dans les commentaires que vous avez plusieurs "gardes" qui tirent chacun sur des cibles, potentiellement en même temps. Cela complique un peu les choses, par rapport à cette réponse .

Vous avez besoin des tableaux d'affichage x , y y z , tous de type dummy .

Dans un premier temps, lorsque vous voulez que quelque chose tire, j'ai suggéré de créer une entité factice que vous pouvez faire pivoter vers la cible, mais je pense que faire pivoter les entités de tir elles-mêmes est probablement mieux dans votre cas :

execute as @e[shooter>] at @s run tp @s ~ ~ ~ facing entity @e[<selector for target>,limit=1]

Ensuite, vous faites essentiellement la même chose que dans mon autre réponse, sauf que certaines choses doivent être faites par rapport au tireur, parce que le simple fait de marquer les flèches ne fonctionne pas s'il y en a plusieurs en même temps.

execute as @e[<shooter>] at @s run summon arrow ^ ^ ^1 {NoGravity:1}
execute as @e[type=arrow] store result score @s x run data get entity @s Pos[0] 10
execute as @e[type=arrow] store result score @s y run data get entity @s Pos[1] 10
execute as @e[type=arrow] store result score @s z run data get entity @s Pos[2] 10
execute as @e[type=armor_stand] store result score @s x run data get entity @s Pos[0] 10
execute as @e[type=armor_stand] store result score @s y run data get entity @s Pos[1] 10
execute as @e[type=armor_stand] store result score @s z run data get entity @s Pos[2] 10
execute as @e[type=armor_stand] at @s positioned ^ ^ ^1 run scoreboard players operation @e[type=arrow,distance=0] x -= @s x
execute as @e[type=armor_stand] at @s positioned ^ ^ ^1 run scoreboard players operation @e[type=arrow,distance=0] y -= @s y
execute as @e[type=armor_stand] at @s positioned ^ ^ ^1 run scoreboard players operation @e[type=arrow,distance=0] z -= @s z
execute as @e[type=arrow] store result entity @s Motion[0] double 0.1 run scoreboard players get @s x
execute as @e[type=arrow] store result entity @s Motion[1] double 0.1 run scoreboard players get @s y
execute as @e[type=arrow] store result entity @s Motion[2] double 0.1 run scoreboard players get @s z

Vous voudrez probablement aussi étiqueter les flèches d'une manière ou d'une autre, de façon à ne pas définir leur Motion à 0 à la dernière étape s'ils ont été tirés d'un arc ou si vous leur avez déjà appliqué le mouvement (sauf si vous le souhaitez).

N'oubliez pas que les flèches perdent un peu de vitesse avec le temps, et qu'elles s'arrêteront donc en plein vol à un moment donné. Et la cible peut bien sûr se déplacer. Vous pouvez également ajuster les facteurs d'échelle ( 10 y 0.1 ) si vous souhaitez que les flèches soient plus rapides.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X