J'ai une grille de tuiles, et je veux être en mesure de saisir une zone comme ceci: Prenez la première et le dernier point de glisser la souris dans XNA/monogame
Voici mon code actuel:
case clickState.select:
if (IsActive && //Check if window is active and mouse is within working area
Mouse.GetState().X > 0 &&
Mouse.GetState().X < windowSize.X - 32 &&
Mouse.GetState().Y > 0 &&
Mouse.GetState().Y < windowSize.Y - 32)
{
if (Mouse.GetState().LeftButton != ButtonState.Pressed && prevMouseState)//if has released, and last frame it wasnt:
{
Vector2 Topos = toTilePos(new Vector2(Mouse.GetState().X, Mouse.GetState().Y)); //convert the onscreen postion to coordinates on the grid
selected.Z = Topos.X; //yes i am using a vector4 to store 2 vector2s
selected.W = Topos.Y; //Z =x2, W = y2
break;
}
if (Mouse.GetState().LeftButton == ButtonState.Pressed && !prevMouseState) //If started to click:
{
if (selected != new Vector4(0)) selected = new Vector4(0); //Reset selected area
prevMouseState = true; //The previouse state will be updated
Vector2 Topos = toTilePos(new Vector2(Mouse.GetState().X, Mouse.GetState().Y)); //convert to tile space
selected.X = Topos.X; // set
selected.Y = Topos.Y; // set
break;
}
}
else if (prevMouseState == true)
prevMouseState = false;
break;
À l'heure actuelle, il ne fait que pépins et ... agit bizarrement .. Il est assez difficile à expliquer, parfois il sélectionne, d'autres, il sélectionne la mauvaise zone. Toute aide est appréciée!
Merci d'avoir répondu! J'avais déjà corrigé mon code avant que tu l'aies posté, mais le mien est l'équivalent du tien. J'ai trouvé que l'erreur était principalement dans le code qui convertit 2 vector2s en un rectangle. https://stackoverflow.com/a/45259788/8050514 –