Afficher la direction d’un joueur
Pour faire un mini jeu, je voulais pouvoir indiquer la direction vers tous les joueurs pour pimenter les parties et éviter que les joueurs se cachent pour ne pas mourir et ainsi qu’ils restent toujours en mouvement.
La méthode prend plusieurs paramètres qui sont:
– Le joueur, c’est celui qui va se voir afficher la particule.
– La distance entre le joueur et l’endroit ou on va afficher la particule. Pour info: plus la distance est grande moins la particule sera visible par le joueur qu’elle sera loin^^.
– Les deux paramètres suivants sont les X et Z de la position ou on veut la direction. Pour le Y, on utilise celui du joueur pour l’afficher à ça hauteur.
La méthode retourne ensuite un vecteur qui sera le point ou on va afficher la particule.
Le code:
public static Vector3d getDirection(Player player, Integer distance, Integer oX, Integer oZ) { double pX = player.getLocation().getX(); double pY = player.getLocation().getY(); double pZ = player.getLocation().getZ(); double t = Math.atan2(oZ-pZ, oX-pX); double calcX = pX + (distance*Math.cos(t)); double calcZ = pZ + (distance*Math.sin(t)); return new Vector3d(calcX+0.5, pY+0.5, calcZ+0.5); }
Pour l’utiliser:
ParticleEffect particleEffect = Sponge.getGame().getRegistry().createBuilder(Builder.class).count(1).type(ParticleTypes.REDSTONE).build(); player.spawnParticles(particleEffect, Players.getDirection(player, 3, 5, 30));
On peut par exemple mettre le code dans l’event quand le joueur bouge ou dans un Scheduler… Suivant ça mise en œuvre on pourra afficher la direction vers chaque joueur ou vers un joueur précis comme dit au début de l’article.
Ce code peut aussi servir à un truck encore plus utile: re-téléporter un joueur sorti du worldborder(circulaire) à l’intérieur.
Tous les codes sont testés et sont fonctionnels, si il arrive qu'un de ces codes ne fonctionne pas chez vous, merci de me le signaler.