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 :

Problème avec mes collision


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 82
    Par défaut Problème avec mes collision
    Bonjour,

    J'ai réussie a faire des collision avec ma map mais le problème c'est quand il y a une collision je ne peut plus du tout bouger mon joueur
    Je ne sais pas comment faire

    le code qui fait la collision entre le player et la map
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public bool IsCollisionTile(Rectangle player)
    {
        foreach(Rectangle rect in this._collisionObject)
        {
            if (rect.Intersects(player))
            {
                return true;
            }
        }
        return false;
    }
    Le code qui dit que le player ne peut pas bouger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (mapLoader.IsCollisionTile(player.getDestinationRect()))
    {
            player.setCantWalk(true);
    }
    Le code de la variable cantWalk la fonction Update et la fonction setCantWalk dans la class Player.cs
    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
     
    private bool _cantWalk;
     
        public void Update()
        {
        this._destinationRectangle.X = (int)_position.X;
        this._destinationRectangle.Y = (int)_position.Y;
        this._destinationRectangle.Width = _texture.Width;
        this._destinationRectangle.Height = _texture.Height;
        if(Keyboard.GetState().IsKeyDown(Keys.Up))
                {
                    if (_cantWalk == false)
                    {
                        _position.Y--;
                    }
                }
                else if (Keyboard.GetState().IsKeyDown(Keys.Down))
                {
                    if (_cantWalk == false)
                    {
                        _position.Y++;
                    }
                }
                else if (Keyboard.GetState().IsKeyDown(Keys.Right))
                {
                    if (_cantWalk == false)
                    {
                        _position.X++;
                    }
                }
                else if (Keyboard.GetState().IsKeyDown(Keys.Left))
                {
                    if (_cantWalk == false)
                    {
                        _position.X--;
                    }
                }
     
            }
     
            public void setCantWalk(bool walk)
            {
                _cantWalk = walk;
            }

    Merci de m'aider

  2. #2
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 82
    Par défaut
    J'ai fait de nouveaux test

    Voici le lien des fonction en pastbin
    http://pastebin.com/mb10iSme
    http://pastebin.com/JZH1KRgP
    http://pastebin.com/4FRQ4BtB

    Voici le lien de mon projet entier si vous voulez
    https://www.dropbox.com/sh/irqkcyb4s...dEOtFiZ4a?dl=0

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Le comportement me paraît normal. La variable CantWalk est positionnée à True en cas de collision mais jamais remise à False. Je pense que passer par une variable n'est pas une bonne idée. N'as-tu pas la possibilité au moment du Keydown de tester si le player peut effectuer le mouvement et dans ce cas modifier ses coordonnées ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 82
    Par défaut
    Bonjour,

    Le problème c'est que je débute je sais pas si on peut même si je me doute que l'on peut je ne sait pas comment m'y prendre ^^

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Tu peux peut-être passer pas un système d'évènements. Le joueur qui tente de se déplacer (au Keydown) lève un event. L'objet qui gère les collisions s'abonne à cet event et définit la nouvelle position du joueur.

Discussions similaires

  1. [FreeBSD] Problème avec mes disques durs
    Par gorgonite dans le forum BSD
    Réponses: 24
    Dernier message: 29/06/2006, 17h03
  2. problème avec mes constantes
    Par salseropom dans le forum C
    Réponses: 6
    Dernier message: 10/05/2006, 17h37
  3. [JDBC]problème avec mes id
    Par Hydre dans le forum JDBC
    Réponses: 12
    Dernier message: 29/09/2005, 13h19
  4. [std::list][find_if] problème avec mes foncteurs
    Par n!co dans le forum SL & STL
    Réponses: 12
    Dernier message: 04/02/2005, 11h56
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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