Sprite=souris pb de coordonnée directX (c#) "draw2D"

Résolu
10demon10 Messages postés 63 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 28 juin 2012 - 20 août 2008 à 20:13
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 22 août 2008 à 17:14
bonjour à tous

voila j'ai un petit bug avec mon apply et mon sprite qui est censé remplacer ma souris en effet il reste bloqué en haut a gauche de l'écran il ne suis pas le pointeur de la souris comme il devrait le faire ??? (il boug un peut mais uniquement dans le cadre haut gauche de l'écran )

//le code
float mX = 0;
float mY = 0;
Microsoft.DirectX.DirectInput.Device main_mouse;
//...
  public void Render()
        {
loadertexture();
mousemanager();
           #region
            Rectangle rect_cursor = new Rectangle(0, 0, 100, 100);
             using (Sprite cs = new Sprite(device_manager.Maindevice))
             {
                 cs.Begin(SpriteFlags.AlphaBlend);            
                 cs.Draw2D(cursor, rect_cursor, new SizeF(50,50), new PointF(mX,mY), Color.FromArgb(255, 255, 255, 255));
                
                 cs.End();
             }
            #endregion
//...
void mousemanager()
        {
            main_mouse.Acquire();
            MouseState mstate = main_mouse.CurrentMouseState;
            //Vector3 spritePosition = new Vector3(mstate.X,mstate.Y, 1.0f);
            mX = mstate.X;
            mY = mstate.Y;
        }

si quelqu'un à une solution je suis preneur merci d'avance

nomad & wild [  ]

4 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
21 août 2008 à 03:51
Salut, il faut savoir que DirectInput en mode "Relative" ou "Absolue" ne renvoi pas des coordonnées d'écrans, mais le nombre d'unités de déplacement. J'en parle ici :

http://www.csharpfr.com/infomsg_POSITION-ABSOLUE-SOURIS-AVEC-DIRECTX_746953.aspx
3
10demon10 Messages postés 63 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 28 juin 2012
21 août 2008 à 18:56
Oki je comprend mieux ce que tu explique pour faire cour et pour ceux qui connaisse sa explique pourquoi quand on joue a Counter Strike (ou autre jeux du genre) et qu'on change la "sensibilité de la souris" ce la ne modifi rien sous windows et même ce petit bug des fois ou la souris aparait mais restre au centre de l'écran sous CS.

Merci de ta beaucoup réponse je vois exactement ce que je doit faire maintenant, mais vais-je y arriver suspense

nomad & wild [  ]
0
10demon10 Messages postés 63 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 28 juin 2012
22 août 2008 à 08:14
Alors suite à ta remarque j'ai changer un bout de code hier le voici
   void mousemanager()
    {
            main_mouse.Acquire();
            MouseState mstate = main_mouse.CurrentMouseState;

            if (mstate.X > 0 )
            {
                mX = mX + 20;
            }
            if (mstate.X < 0 )
            {
                mX = mX - 20;
            }
            if (mstate.Y > 0 )
            {
                mY = mY + 20;
            }
            if (mstate.Y < 0 )
            {
                mY = mY - 20;
            }
           
        }

seulement cela ne donne pas le résultat vraiment recommandé çà ce déplace en diagonal le plus souvent et perso sa me plante asssez souvent donc peut stable , mais sur le principe c'est cela.

Si quelqu'un à un code plus stable je serai preneur en le(s) remerciant(s) d'avence(nt)

nomad & wild [  ]
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
22 août 2008 à 17:14
De mémoire, c'est pas comme ça que ça marche.. tu dois additionner les valeurs renvoyées par la souris, par exemple si tu vas légèrement vers la droite X va contenir +1, si tu accelère rapidement, X peut contenir +6 ..
0
Rejoignez-nous