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.