IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C# XNA]Probleme rotation [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut [C# XNA]Probleme rotation
    Bonsoir,

    Je suis entrain de faire une petite IA sur un ennemi. J'aimerez faire en sorte qu'il puisse voir le joueur si il y a moin de 45° entre eux.
    J'ai fais donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    angle = (float)Math.Atan2(Main.player.position.Y - position.Y, Main.player.position.X - position.X);
    degres = angle * 180 / (float)Math.PI;
    Jusque la pas de problème, j'ai l'angle entre les deux.
    Mais quand je fais une rotation a l'ennemi, le degrés ne correspond plus.
    J'ai essayé sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    degres = angle * 180 / (float)Math.PI - rotation;
    Sa me donne des angles bizarres.
    Après pleins de tentatives, je ne sais pas quoi faire.

    Pouvez vous m'aidez svp.

  2. #2
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    Citation Envoyé par Exec57 Voir le message
    Bonsoir,

    Je suis entrain de faire une petite IA sur un ennemi. J'aimerez faire en sorte qu'il puisse voir le joueur si il y a moin de 45° entre eux.
    J'ai fais donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    angle = (float)Math.Atan2(Main.player.position.Y - position.Y, Main.player.position.X - position.X);
    degres = angle * 180 / (float)Math.PI;
    Jusque la pas de problème, j'ai l'angle entre les deux.
    Mais quand je fais une rotation a l'ennemi, le degrés ne correspond plus.
    J'ai essayé sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    degres = angle * 180 / (float)Math.PI - rotation;
    Sa me donne des angles bizarres.
    Après pleins de tentatives, je ne sais pas quoi faire.

    Pouvez vous m'aidez svp.
    Pourquoi mélange tu les degrés et les radians ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    Citation Envoyé par rotrevrep Voir le message
    Pourquoi mélange tu les degrés et les radians ?
    C'est que je sais pas trop la différence. Tu peux m'expliquez stp.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 122
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Sinon, il y a forum spécial XNA, dans la rubrique Jeux : http://www.developpez.net/forums/f10...eux-video/xna/

    Pour convertir des angles en radians ou en degrées, XNA propose deux fonctions dans Math.

    -> http://msdn.microsoft.com/en-us/libr...toradians.aspx
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    360° <=> 0 (2 π).
    Déjà, tu dois savoir que les radians sont orientables, c'est à dire que pour 180°, tu peux avoir π ou -π.
    Dans ton cas tu devrais utiliser les radians, car t veux que ton perso tournes soit à gauche, soit à droite.

    va lire cette page wiki avant de te lancer dans de grands travaux : http://fr.wikipedia.org/wiki/Fonctio...om%C3%A9trique

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Par défaut
    J'utilise les radians. Pour dessiner l'ennemi, je fais sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Main.spriteBatch.Draw(Main.ennemiTexture, position, null, Color.White, MathHelper.ToRadians(rotation), origin, 1, SpriteEffects.None, 0);
    Je calcule l'angle entre le vector2 de l'ennemi et celui du joueur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    angle = (float)Math.Atan2(Main.player.position.Y - position.Y, Main.player.position.X - position.X);
    degres = angle * 180 / (float)Math.PI;
    Si je me met juste a droite de l'ennemi, j'ai un angle de 0° ou si je me met a gauche, j'ai un angle de 180°. Donc sa fonctionne.
    Le problème c'est que si j'effectue une rotation a l'ennemi par exemple :
    L'ennemi pointe vers le bas(normale). Seulement si je met met a droite de l'ennemi, j'ai un angle de 0° alors que dans la logique je devrai avoir un angle de 90°.

    Pouvez vous m'aidez a régler ce problème svp ?

  7. #7
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Par défaut
    • -π/2 = 90° = Bas
    • -π = 180° = Gauche
    • π/2 = 270° = Haut
    • 0 = Droite


    je te conseille d'écrire directement en radians, pour bien comprendre la notion de direction. Comme je l'ai dit avant, les degrés ne sont pas orientés. Et va visiter le lien de littlewhite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pygame - Probleme rotation
    Par Loenix dans le forum Programmation multimédia/Jeux
    Réponses: 7
    Dernier message: 06/11/2012, 09h55
  2. Probleme Rotation (avec ou sans quaternion)
    Par Scheb dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 01/05/2012, 19h07
  3. [C# XNA] probleme tileLayer
    Par Exec57 dans le forum C#
    Réponses: 0
    Dernier message: 14/04/2012, 11h17
  4. [XNA]Probleme de chargement de texture
    Par Xnacy dans le forum C#
    Réponses: 2
    Dernier message: 02/06/2011, 10h02
  5. [OpenGL] probleme rotations/ translations
    Par Daemonkii dans le forum Windows
    Réponses: 4
    Dernier message: 16/12/2007, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo