Obtenir la direction du regard d'un joueur



  • Bonjour 🙂
    Malgré une recherche acharnée durant plusieurs heures, je n'ai pu trouver aucun résultat qui me permettrait de faire ceci.
    La plupart des sujets trouvés datent de 2012 et sont aujourd'hui inexploitable.
    Je me suis aussi essayé à parcourir toutes les fonctions disponible pour une entité Player. J'ai cru toucher au but avec la valeur rotationYaw.
    Celle ci semble pourtant être complètement aléatoire. Il s'agit sûrement d'une mécanique de Minecraft que je ne saisis pas étant débutant.
    J'espère que l'un de vous pourra m'aider, merci d'avance.
    Bonne soirée



  • Salut, que dis-tu de ça ?


  • Moddeurs confirmés Rédacteurs

    Tu peux utiliser EntityPlayer#getLookVec() ou EntityPlayer#getLook(float) si tu est côté client et que tu as les ticks partiels



  • @'Plaigon':

    Salut, que dis-tu de ça ?

    Merci mais comme je le disais, le sujet date de 2013 est n'est plus valide aujourd'hui :,) Je ne me serais pas permis de poster un message sans regarder auparavant, j'ai parcouru la majorité des forums qui avaient soulevé la question sans trouver de réponse valable actuellement.

    Tu peux utiliser EntityPlayer#getLookVec() ou EntityPlayer#getLook(float) si tu est côté client et que tu as les ticks partiels

    Merci, je vais essayer ça tout de suite 🙂 Je l'avais déjà vu mais je n'avais réussi à l'exploiter.


    Je crée ce dernier message en conclusion 🙂
    La bonne solution était PlayerEntity#getHorizontalFacing(). Cela retourne les valeurs cardinales (ce qui correspond à ce que je recherchais).
    Une bonne documentation (celle-ci) m'a permis de comprendre comment utiliser la classe EnumFacing.
    Voici donc le code final :

    EnumFacing orientation = entity.getHorizontalFacing();
    int dir = Math.round(orientation.getHorizontalAngle());
    

    dir prendra 4 valeurs :
    -  0 (z+)
    -  90 (x-)
    -  180 (Z-)
    -  270 (X+)

    Merci de votre aide 🙂
    La fonction getLook offre incontestablement plus de possibilité mais est plus délicate à manipuler.



  • Ceci marchait très bien cela dit:

    
    int var24 = MathHelper.floor((double)(Minecraft.getMinecraft().player.rotationYaw * 8.0F / 360.0F) + 0.5D) & 3;
    
    


  • @'Plaigon':

    Ceci marchait très bien cela dit:

    
    int var24 = MathHelper.floor((double)(Minecraft.getMinecraft().player.rotationYaw * 8.0F / 360.0F) + 0.5D) & 3;
    
    

    Je suis particulièrement étonné étant donné que cela me donnait une valeur qui n'avait aucun sens … Il y a t-il un import particulier pour MathHelper ?



  • Il n'y a qu'une seule classe MathHelper à ce que je sache. Ca donne les integer correspondant à la direction, comme indiqués sur le topic.


Log in to reply