C# XNA Position de la Souris
Je vais avoir quelques problèmes avec mes coordonnées de la souris dans le XNA - la 0x0 est arbitrairement proche (mais pas dans) le coin en haut à gauche de mon écran.
Je suis en cours d'exécution le jeu en mode fenêtré, mais les coordonnées sont basés hors de l'écran, pas la fenêtre de jeu (même si le XNA documentation me dit qu'il doit en être autrement)
Merci d'avance!
Voici le code:
namespace TheGame
{
class Mousey
{
static public Vector2 pos;
static private Texture2D tex;
static public MouseState mouseState;
static public MouseState previousState;
//static public Mousey()
//{
//}
static public void Update()
{
previousState = mouseState;
mouseState = Mouse.GetState(); //Needed to find the most current mouse states.
pos.X = mouseState.X; //Change x pos to mouseX
pos.Y = mouseState.Y; //Change y pos to mouseY
}
//Drawing function to be called in the main Draw function.
static public void LoadContent(ContentManager thecontent)
{
tex = thecontent.Load<Texture2D>("mousey");
}
static public void Draw(SpriteBatch batch) //SpriteBatch to use.
{
batch.Draw(tex, pos, Color.White); //Draw it using the batch.
}
static public bool LBP()
{
if (mouseState.LeftButton == ButtonState.Pressed && previousState.LeftButton == ButtonState.Released)
{
return true;
}
else
{
return false;
}
}
}
}
Votre code fonctionne très bien avec moi. Copypasted dans un nouveau projet. Le 0x0 est en haut à gauche, à moins que vous parlez d'un de 1 pixel de précision chose. C'est peut-être le spriteBatch... la Seule chose que j'ai changé.
OriginalL'auteur Fool Whip | 2011-10-27
Vous devez vous connecter pour publier un commentaire.
Dans le jeu.cs:
OriginalL'auteur Jaycin Van Vuuren
Cela fonctionne pour moi 😉
Pour l'utiliser, je l'ajouter à mon jeu-composant à l'aide de cette classe:
Espère que cette aide sombody 😀
OriginalL'auteur MadApples
Avez-vous essayer quelque chose de plus simple comme ça?
Il peut y avoir un peu de temps entre dessiner et mettre à jour, en raison de la façon calendrier des travaux dans XNA, peut-être est-ce la cause de la perception de pixel de décalage?
Et... êtes-vous sûr de "configuré" votre sprite lot correctement? Les coordonnées sont relatives à la fenêtre de jeu, de sorte que la documentation dire.
Autre chose: Pourquoi êtes-vous à l'aide de champs statiques? Je n'aime vraiment pas ce choix, un anti-modèle. L'utilisation des champs de classe, pas de champs statiques.
Aussi... je suppose que vous êtes le dessin d'une icône de souris, à droite? considérer que XNA commencer à dessiner la texture du point spécifié, êtes-vous sûr que la texture est bien en forme avec le point en haut à gauche comme votre flèche de la souris fin?
J'ai trouvé un joli exemple, ici vous pouvez aimer: http://azerdark.wordpress.com/2009/07/08/displaying-cursor-xna/
Pensez aussi que vous pouvez activer et désactiver la normale de windows OS curseur de la souris avec IsMouseVisible = true;
OriginalL'auteur Salvatore Previti
Votre appel ne compense pas la texture. Si le "pointeur" une partie de votre image n'est pas dans l'0,0 position (en haut à gauche) de la Texture de vos cheveux, le positionnement sera pas.
Ajouter un
Console.WriteLine(pos);
à votre mise à jour pour voir la position c'est le dessin. N'oubliez pas de supprimer cette après votre débogage car writeline va tuer votre performance.Essayez l'une de l'surchargé SpriteBatch.Draw() appelle le facteur qui dans une "origine", ce qui vous permet de décider quel point de la texture doit être affiché à la position. Dans le code suivant tordre le Vecteur 2 en fonction de la texture de vos cheveux est tiré.
OriginalL'auteur Beanish