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 :

XNA mon animation ne se fait pas :/


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Par défaut XNA mon animation ne se fait pas :/
    Salut a tous !

    Je développe (enfin j'essaye) un Metal Slug a ma sauce.

    J'ai les déplacement etc mais maintenant que je me lance dans les balles, je n'arrive pas a les animer.

    Je ne vois pas d’où ca peut venir. Je les ajoutes dans une liste, je les dessines, mais c'est tout... Elle ne bouge pas (animations)

    voila mon code :

    CLASS PERSONNAGE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    List<ClassBalles> ListBalles;
     
    ...
     
    METHODE DE SHOOT
     
     ListBalles.Add(new ClassBalles((int)Math.Round(Position.X + 50), (int)Math.Round(Position.Y) - 30, ClassRessources.pistolBullet));
     
    ...
     
    public void Draw(SpriteBatch spriteBatch)
            {
               for (int i = 0; i < ListBalles.Count; i++)
                {
                    ClassBalles currentBalle = ListBalles[i];
                    currentBalle.Draw(spriteBatch);
                }
    }

    CLASS BALLE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
     
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace SlugRemix
    {
        class ClassBalles
        {
            Rectangle Hitbox;
            Texture2D Texture;
     
            int Timer, AnimationSpeed, FrameColone;
     
            public ClassBalles(int x, int y, Texture2D texture)
            {
                Hitbox = new Rectangle(x, y, texture.Width / 6, texture.Height);
                Texture = texture;
            }
            public ClassBalles()
            {
                Texture = ClassRessources.pistolBullet;
                AnimationSpeed = 10;
            }
     
     
            public void Animate()
            {
                this.Timer++;
     
                if (this.Timer >= AnimationSpeed)
                {
                    this.Timer = 0;
                    this.FrameColone++;
     
     
                    if (FrameColone == 6)
                        FrameColone = 0;
     
                }
            }
     
     
            public void Update()
            {
                Animate();
            }
     
            public void Draw(SpriteBatch spriteBatch)
            {
     
                spriteBatch.Draw(
                   Texture,
                   Hitbox,
                   new Rectangle((FrameColone) * 18, 0, 18, 18),
                   Color.White,
                   0f,
                   new Vector2(18/2, 18/2),
                   SpriteEffects.None,
                   0f);
     
                spriteBatch.DrawString(ClassRessources.font, "Frame " + FrameColone, new Vector2(50, 50), Color.Red);
            }
        }
    }

    Voila mes codes... Le FrameColone tourne bien, mais l'animation ne se fait pas, une petite aide ? Thx !

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Si je lis cette fonction : http://msdn.microsoft.com/en-us/library/ff433992.aspx, il semblerais qu'il y a inversion des paramètres destination/source rectangle.

    Peut-être ceci à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    spriteBatch.Draw(
                   Texture,
                   new Rectangle((FrameColone) * 18, 0, 18, 18),
                   Hitbox,
                   Color.White,
                   0f,
                   new Vector2(18/2, 18/2),
                   SpriteEffects.None,
                   0f);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Par défaut
    Salut !

    Je viens d'echanger comme tu me l'a dis mais rien du tout. Elle ne s'affiche même plus !

  4. #4
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Re.

    C'est normal. Il faut revoir la classe. Hitbox correspond maintenant aux coordonnées de la texture.

    Peut-ëtre ceci pour vérifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hitbox = new Rectangle(0, 0, texture.Width, texture.Height);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Par défaut
    Mais ma hitbox sert de point d'origine sur l'apparition de mes balles.

    En quelque sorte je recupere les coordonnés de mon personnage et je l'affiche a cet endroit.

    Si je met 0,0 elle s'affiche en haut a gauche de ma fenetre et toujours sans animation.

  6. #6
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Re.

    Modifie la classe pour en compte les changements comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    class ClassBalles
        {
            Rectangle Hitbox;
            Rectangle SpritePosition;
            Texture2D Texture;
     
            int Timer, AnimationSpeed, FrameColone;
     
            public ClassBalles(int x, int y, Texture2D texture)
            {
                Hitbox = new Rectangle(0, 0, texture.Width, texture.Height);
                SpritePosition = new Rectangle(x, y, texture.Width, texture.Height);
                Texture = texture;
            }
     
            ...
     
     
     
    spriteBatch.Draw(
                   Texture,
                   new Rectangle(FrameColone * SpritePosition.X, SpritePosition.Y, SpritePosition.Width, SpritePosition.Height),
                   Hitbox,
                   Color.White,
                   0f,
                   new Vector2(18/2, 18/2),
                   SpriteEffects.None,
                   0f);


    PS : Le texture.(Width / 6) sert à quoi ?

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

Discussions similaires

  1. animate ne fait pas bouger mon image
    Par beegees dans le forum jQuery
    Réponses: 2
    Dernier message: 17/12/2013, 08h41
  2. [2.x] La validation de mon formulaire ne se fait pas
    Par gilloubillou dans le forum Symfony
    Réponses: 7
    Dernier message: 03/08/2012, 09h24
  3. Pourquoi mon animation Flash ne marche pas sur IE ?
    Par Audrey75 dans le forum Flash
    Réponses: 23
    Dernier message: 23/12/2008, 13h58
  4. Mon animation ne se lance pas
    Par sourivore dans le forum Flash
    Réponses: 10
    Dernier message: 09/04/2007, 13h30
  5. Int 21H AX=716Ch ne fait pas mon affaire !!
    Par TheBigMac dans le forum Assembleur
    Réponses: 4
    Dernier message: 10/09/2004, 20h51

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